Related Articles
Program to calculate the value of nPr
• Last Updated : 07 May, 2021

Given two numbers n and r, the task is to find the value of nPr.
nPr represents n permutation r which is calculated as n!/(n-k)!. Permutation refers to the process of arranging all the members of a given set to form a sequence. The number of permutations on a set of n elements is given by n! where “!” represents factorial.

`nPr = n! / (n - r)! `

Program:

## C++

 `// CPP program to calculate nPr``#include``using` `namespace` `std;` `int` `fact(``int` `n)``{``    ``if` `(n <= 1)``        ``return` `1;``    ``return` `n * fact(n - 1);``}` `int` `nPr(``int` `n, ``int` `r)``{``    ``return` `fact(n) / fact(n - r);``}` `// Driver code``int` `main()``{``    ``int` `n = 5;``    ``int` `r = 2;` `    ``cout << n << ``"P"` `<< r << ``" = "` `<< nPr(n, r);``}` `// This code is contributed by``// Surendra_Gangwar`

## Java

 `// Java program to calculate nPr` `import` `java.util.*;` `public` `class` `GFG {` `    ``static` `int` `fact(``int` `n)``    ``{``        ``if` `(n <= ``1``)``            ``return` `1``;``        ``return` `n * fact(n - ``1``);``    ``}` `    ``static` `int` `nPr(``int` `n, ``int` `r)``    ``{``        ``return` `fact(n) / fact(n - r);``    ``}` `    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``5``;``        ``int` `r = ``2``;` `        ``System.out.println(n + ``"P"` `+ r + ``" = "``                           ``+ nPr(n, r));``    ``}``}`

## Python3

 `# Python3 program to calculate nPr``import` `math``def` `fact(n):``    ``if` `(n <``=` `1``):``        ``return` `1``        ` `    ``return` `n ``*` `fact(n ``-` `1``)` `def` `nPr(n, r):``    ` `    ``return` `math.floor(fact(n) ``/``                ``fact(n ``-` `r))``    ` `# Driver code``n ``=` `5``r ``=` `2` `print``(n, ``"P"``, r, ``"="``, nPr(n, r))` `# This code contributed by Rajput-Ji`

## C#

 `// C# program to calculate nPr``using` `System;` `class` `GFG``{` `    ``static` `int` `fact(``int` `n)``    ``{``        ``if` `(n <= 1)``            ``return` `1;``        ``return` `n * fact(n - 1);``    ``}` `    ``static` `int` `nPr(``int` `n, ``int` `r)``    ``{``        ``return` `fact(n) / fact(n - r);``    ``}` `    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 5;``        ``int` `r = 2;` `        ``Console.WriteLine(n + ``"P"` `+ r + ``" = "``                        ``+ nPr(n, r));``    ``}``}` `/* This code contributed by PrinciRaj1992 */`

## PHP

 ``

## Javascript

 `// Javascript program to calculate nPr``function` `fact(n)``{``    ``if` `(n <= 1)``        ``return` `1;``        ` `    ``return` `n * fact(n - 1);``}` `function` `nPr(n, r)``{``    ``return` `Math.floor(fact(n) /``                ``fact(n - r));``}``    ` `// Driver code``let n = 5;``let r = 2;` `document.write(n, ``"P"``, r, ``" = "``, nPr(n, r));` `// This code is contributed by gfgking`
Output:
`5P2 = 20`

Optimization for multiple queries of nPr
If there are multiple queries for nPr, we may precompute factorial values and use the same for every call. This would avoid the computation of the same factorial values again and again.

My Personal Notes arrow_drop_up