Thursday, November 28, 2024
Google search engine
HomeData Modelling & AIFind the number of words of X vowels and Y consonants...

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

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 3\choose2   i.e 3 
The total number of ways of choosing 2 consonants from a total number of 3 consonants is 3\choose2   i.e 3. 
The total number of ways of selecting 2 consonants from 3 and 2 vowels from 3 is 3\choose2   3\choose2   = 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 
 

Recommended: Please try your approach on {IDE} first, before moving on to the solution.
Approach : 
 

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

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 <bits/stdc++.h>
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




<script>
      // JavaScript 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
      function fact(n) {
        var res = 1;
        for (var i = 2; i <= n; i++)
            res = res * i;
        return res;
      }
 
      // Function to find nCr
      function 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
      function NumberOfWays(X, Y, M, N) {
        return fact(X + Y) * nCr(M, X) * nCr(N, Y);
      }
 
      // Driver code
      var X = 2,
        Y = 2,
        M = 3,
        N = 3;
         
      // Function call
      document.write(NumberOfWays(X, Y, M, N));
       
      // This code is contributed by rdtank.
    </script>


Output: 

216

 

Time Complexity: O(n), time to calculate factorial of n
Auxiliary Space: O(1), as no extra space is required

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments