GeeksforGeeks App
Open App
Browser
Continue

Permutations of n things taken r at a time with k things together

Given n, r, and K. The task is to find the number of permutations of different things taken at a time such that specific things always occur together.

Examples:

Input : n = 8, r = 5, k = 2
Output : 960
Input : n = 6, r = 2, k = 2
Output : 2 

Approach:

1. A bundle of specific things can be put in r places in (r – k + 1) ways .
2. k specific things in the bundle can be arranged themselves into k! ways.
3. Now (n – k) things will be arranged in (r – k) places in ways.

Thus, using the fundamental principle of counting, the required number of permutations will be:

Below is the implementation of the above approach:

C++

 // CPP program to find the number of permutations of// n different things taken r at a time// with k things grouped together #include using namespace std; // Function to find factorial// of a numberint factorial(int n){    int fact = 1;     for (int i = 2; i <= n; i++)        fact = fact * i;     return fact;} // Function to calculate p(n, r)int npr(int n, int r){    int pnr = factorial(n) / factorial(n - r);     return pnr;} // Function to find the number of permutations of// n different things taken r at a time// with k things grouped togetherint countPermutations(int n, int r, int k){    return factorial(k) * (r - k + 1) * npr(n - k, r - k);} // Driver codeint main(){    int n = 8;    int r = 5;    int k = 2;     cout << countPermutations(n, r, k);     return 0;}

Java

 // Java program to find the number of permutations of// n different things taken r at a time// with k things grouped together class GFG{// Function to find factorial// of a numberstatic int factorial(int n){    int fact = 1;     for (int i = 2; i <= n; i++)        fact = fact * i;     return fact;} // Function to calculate p(n, r)static int npr(int n, int r){    int pnr = factorial(n) / factorial(n - r);     return pnr;} // Function to find the number of permutations of// n different things taken r at a time// with k things grouped togetherstatic int countPermutations(int n, int r, int k){    return factorial(k) * (r - k + 1) * npr(n - k, r - k);} // Driver codepublic static void main(String[] args){    int n = 8;    int r = 5;    int k = 2;     System.out.println(countPermutations(n, r, k));}}// this code is contributed by mits

Python3

 # Python3 program to find the number of permutations of# n different things taken r at a time# with k things grouped together # def to find factorial# of a numberdef factorial(n):      fact = 1;     for i in range(2,n+1):        fact = fact * i;     return fact;   # def to calculate p(n, r)def npr(n, r):      pnr = factorial(n) / factorial(n - r);     return pnr;   # def to find the number of permutations of# n different things taken r at a time# with k things grouped togetherdef countPermutations(n, r, k):      return int(factorial(k) * (r - k + 1) * npr(n - k, r - k));   # Driver coden = 8;r = 5;k = 2; print(countPermutations(n, r, k));     # this code is contributed by mits

C#

 // C# program to find the number of// permutations of n different things// taken r at a time with k things// grouped togetherusing System; class GFG{     // Function to find factorial// of a numberstatic int factorial(int n){    int fact = 1;     for (int i = 2; i <= n; i++)        fact = fact * i;     return fact;} // Function to calculate p(n, r)static int npr(int n, int r){    int pnr = factorial(n) /              factorial(n - r);     return pnr;} // Function to find the number of// permutations of n different// things taken r at a time with// k things grouped togetherstatic int countPermutations(int n,                             int r, int k){    return factorial(k) * (r - k + 1) *                    npr(n - k, r - k);} // Driver codestatic void Main(){    int n = 8;    int r = 5;    int k = 2;     Console.WriteLine(countPermutations(n, r, k));}} // This code is contributed by mits

PHP

 

Javascript

 

Output:

960

Time Complexity: O(n)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up