📜  程序来计算nPr的值

📅  最后修改于: 2021-04-28 13:59:27             🧑  作者: Mango

给定两个数字n和r,任务是找到nPr的值。

nPr代表n个置换r,其计算公式为n!/(nk)!。 。排列是指将给定集合的所有成员排列成一个序列的过程。一组n个元素上的排列数由n!给出,其中“!”代表阶乘。

nPr = n! / (n - r)!

程序:

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


输出:
5P2 = 20


优化多个nPr查询

如果对nPr有多个查询,我们可以预先计算阶乘值,并在每次调用时使用它。这将避免一次又一次地计算相同的阶乘值。