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:
- A bundle of
specific things can be put in r places in (r – k + 1) ways .
- k specific things in the bundle can be arranged themselves into k! ways.
- 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 <bits/stdc++.h> using namespace std; // Function to find factorial // of a number 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) 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 together int countPermutations( int n, int r, int k) { return factorial(k) * (r - k + 1) * npr(n - k, r - k); } // Driver code int 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 number static 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 together static int countPermutations( int n, int r, int k) { return factorial(k) * (r - k + 1 ) * npr(n - k, r - k); } // Driver code public 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 number def 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 together def countPermutations(n, r, k): return int (factorial(k) * (r - k + 1 ) * npr(n - k, r - k)); # Driver code n = 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 together using System; class GFG { // Function to find factorial // of a number static 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 together static int countPermutations( int n, int r, int k) { return factorial(k) * (r - k + 1) * npr(n - k, r - k); } // Driver code static void Main() { int n = 8; int r = 5; int k = 2; Console.WriteLine(countPermutations(n, r, k)); } } // This code is contributed by mits |
PHP
<?php // PHP program to find the number // of permutations of n different // things taken r at a time // with k things grouped together // Function to find factorial // of a number function factorial( $n ) { $fact = 1; for ( $i = 2; $i <= $n ; $i ++) $fact = $fact * $i ; return $fact ; } // Function to calculate p(n, r) function npr( $n , $r ) { $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 together function countPermutations( $n , $r , $k ) { return factorial( $k ) * ( $r - $k + 1) * npr( $n - $k , $r - $k ); } // Driver code $n = 8; $r = 5; $k = 2; echo countPermutations( $n , $r , $k ); // This code is contributed by mits ?> |
Javascript
<script> // JavaScript program to find the number of permutations of // n different things taken r at a time // with k things grouped together // Function to find factorial // of a number function factorial(n) { let fact = 1; for (let i = 2; i <= n; i++) fact = fact * i; return fact; } // Function to calculate p(n, r) function npr(n, r) { let pnr = Math.floor(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 together function countPermutations(n, r, k) { return factorial(k) * (r - k + 1) * npr(n - k, r - k); } // Driver code let n = 8; let r = 5; let k = 2; document.write(countPermutations(n, r, k)); // This code is contributed by Surbhi Tyagi. </script> |
Output:
960
Time Complexity: O(n)
Auxiliary Space: O(1)
Please Login to comment...