# Find the number of words of X vowels and Y consonants that can be formed from M vowels and N consonants

• Last Updated : 29 Apr, 2021

Given four integers X, Y, M and N. The task is to find the number of ways to form a word by choosing X number of vowels and Y number of consonants from total numbers of M vowels and N consonants.
Examples:

Input : X = 2, Y = 2, M = 3, N = 3
Output : 216
The total number of ways of choosing 2 vowels from a total number of 3 vowels is i.e 3
The total number of ways of choosing 2 consonants from a total number of 3 consonants is i.e 3.
The total number of ways of selecting 2 consonants from 3 and 2 vowels from 3 is = 9
The total number of ways of arranging 4 letters among themselves = 4! = 24
Hence, the required number of ways = 24 * 9 = 216
Input : X = 1, Y = 2, M = 2, N = 3
Output : 36

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

• The total number of ways of choosing X vowels from a total number of M vowels is
• The total number of ways of choosing Y consonants from a total number of N consonants is
• The total number of ways of selecting Y consonants from N and X vowels from M is
• The total number of ways of arranging (X+Y) letters among themselves = (X+Y)!
• Hence, the required number of ways = (X+Y)! *

Below is the implementation of the above approach:

## C++

 `// CPP program to find the number of words``// of X vowels  and Y consonants can be``// formed from M vowels and N consonants``#include ``using` `namespace` `std;` `// Function to returns factorial of n``int` `fact(``int` `n)``{``    ``int` `res = 1;``    ``for` `(``int` `i = 2; i <= n; i++)``        ``res = res * i;``    ``return` `res;``}` `// Function to find nCr``int` `nCr(``int` `n, ``int` `r)``{``    ``return` `fact(n) / (fact(r) * fact(n - r));``}` `// Function to find the number of words``// of X vowels  and Y consonants can be``// formed from M vowels and N consonants``int` `NumberOfWays(``int` `X, ``int` `Y, ``int` `M, ``int` `N)``{``    ``return` `fact(X + Y) * nCr(M, X) * nCr(N, Y);``}` `// Driver code``int` `main()``{``    ``int` `X = 2, Y = 2, M = 3, N = 3;` `    ``// Function call``    ``cout << NumberOfWays(X, Y, M, N);` `    ``return` `0;``}`

## Java

 `// Java program to find the number of words``// of X vowels and Y consonants can be``// formed from M vowels and N consonants``import` `java.util.*;``import` `java.lang.*;``import` `java.io.*;` `class` `GFG``{``    ` `    ``// Function to returns factorial of n``    ``static` `int` `fact(``int` `n)``    ``{``        ``int` `res = ``1``;``        ``for` `(``int` `i = ``2``; i <= n; i++)``            ``res = res * i;``        ``return` `res;``    ``}``    ` `    ``// Function to find nCr``    ``static` `int` `nCr(``int` `n, ``int` `r)``    ``{``        ``return` `fact(n) / (fact(r) *``                          ``fact(n - r));``    ``}``    ` `    ``// Function to find the number of words``    ``// of X vowels and Y consonants can be``    ``// formed from M vowels and N consonants``    ``static` `int` `NumberOfWays(``int` `X, ``int` `Y,``                            ``int` `M, ``int` `N)``    ``{``        ``return` `fact(X + Y) * nCr(M, X) *``                             ``nCr(N, Y);``    ``}``    ` `    ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``                  ``throws` `java.lang.Exception``    ``{``        ``int` `X = ``2``, Y = ``2``, M = ``3``, N = ``3``;``    ` `        ``// Function call``        ``System.out.println(NumberOfWays(X, Y, M, N));        ``    ``}``}` `// This code is contributed by Nidhiva`

## Python3

 `# Python 3 program to find the number of words``# of X vowels and Y consonants can be``# formed from M vowels and N consonants` `# Function to returns factorial of n``def` `fact(n):``    ``res ``=` `1``    ``for` `i ``in` `range``(``2``, n ``+` `1``, ``1``):``        ``res ``=` `res ``*` `i``    ``return` `res` `# Function to find nCr``def` `nCr(n, r):``    ``return` `fact(n) ``/``/` `(fact(r) ``*` `fact(n ``-` `r))` `# Function to find the number of words``# of X vowels and Y consonants can be``# formed from M vowels and N consonants``def` `NumberOfWays(X, Y, M, N):``    ``return` `fact(X ``+` `Y) ``*` `nCr(M, X) ``*` `nCr(N, Y)` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``X ``=` `2``    ``Y ``=` `2``    ``M ``=` `3``    ``N ``=` `3` `    ``# Function call``    ``print``(NumberOfWays(X, Y, M, N))` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# program to find the number of words``// of X vowels and Y consonants can be``// formed from M vowels and N consonants``using` `System;` `class` `GFG``{``    ` `    ``// Function to returns factorial of n``    ``static` `int` `fact(``int` `n)``    ``{``        ``int` `res = 1;``        ``for` `(``int` `i = 2; i <= n; i++)``            ``res = res * i;``        ``return` `res;``    ``}``    ` `    ``// Function to find nCr``    ``static` `int` `nCr(``int` `n, ``int` `r)``    ``{``        ``return` `fact(n) / (fact(r) *``                          ``fact(n - r));``    ``}``    ` `    ``// Function to find the number of words``    ``// of X vowels and Y consonants can be``    ``// formed from M vowels and N consonants``    ``static` `int` `NumberOfWays(``int` `X, ``int` `Y,``                            ``int` `M, ``int` `N)``    ``{``        ``return` `fact(X + Y) * nCr(M, X) *``                             ``nCr(N, Y);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main (String[] args)``    ``{``        ``int` `X = 2, Y = 2, M = 3, N = 3;``    ` `        ``// Function call``        ``Console.WriteLine(NumberOfWays(X, Y, M, N));        ``    ``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output:
`216`

My Personal Notes arrow_drop_up