C++ Program to Find nPr and nCr

In this article, you will learn and get code to find and print nPr (Permutation) and nCr (Combination) in C++ language. Here are the list of programs available in this article:

  • Find nPr using while Loop
  • Find nCr using while Loop
  • Find nPr and nCr in Single Program
  • Find nPr and nCr using for Loop
  • using user-defined Function

Before going through these programs, let's understand about the formula used to calculate permutation (nPr) and combination (nCr).

nPr Formula

The formula to find the value of nPr is:

nPr = n!/(n-r)!

Note - The symbol (!) indicates factorial.

Note - Permutation (nPr) value shows the number of ways to arrange r things out of n

nCr Formula

The formula to find the value of nCr is:

nCr = n!/r!(n-r)!

Note - Combination (nCr) value shows the number of ways to select r things out of n

C++ Find nPr (Permutation)

To find nPr in C++ programming, you have to ask from user to enter the value of n and r. In both the program of calculating nPr and nCr, the only required code is to find factorial of a number. Rest of the things are just a normal things like initializing, dividing, printing etc.

The question is, write a program in C++ to find the value of nPr. Here is its answer:

#include<iostream>
using namespace std;
int main()
{
    long long fact=1, numerator, denominator;
    int perm, n, r, i=1, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    while(i<=n)
    {
        fact = i*fact;
        i++;
    }
    numerator = fact;                    // n!
    sub = n-r;
    fact = 1;
    i = 1;
    while(i<=sub)
    {
        fact = i*fact;
        i++;
    }
    denominator = fact;                // (n-r)!
    perm = numerator/denominator;
    cout<<"\nPermutation (nPr) = "<<perm;
    cout<<endl;
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is it sample run:

find npr c++

Now type a number say 5 as value of n, and then type another number say 3 as value of r. Now press ENTER key to find and print the value of nPr as shown in the output given below:

c++ program find npr permutation

Note - There are 60 ways to arrange 3 things out of 5.

The following block of code:

while(i<=n)
{
    fact = i*fact;
    i++;
}

is used to find factorial of n. So the statement:

numerator=fact;

is used to initialized the factorial of n to numerator. That is, numerator = n!

In above program, the factorial of n and n-r gets calculated and then using the formula of nPr, its value gets calculated and printed on output. You can refer to, factorial program for its in-depth detail.

C++ Find nCr (Combination)

This program asks from user to enter the value of n and r. Based on the values, program finds and prints the value of nCr that tells the number of ways to select r things out of n:

#include<iostream>
using namespace std;
int main()
{
    long long fact=1, numerator, denominator;
    int comb, n, r, i=1, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    while(i<=n)
    {
        fact = i*fact;
        i++;
    }
    numerator = fact;                    // n!
    sub = n-r;
    fact = 1;
    i = 1;
    while(i<=sub)
    {
        fact = i*fact;
        i++;
    }
    denominator = fact;               // (n-r)!
    fact = 1;
    i = 1;
    while(i<=r)
    {
        fact = i*fact;
        i++;
    }
    denominator = (fact*denominator);
    comb = numerator/denominator;
    cout<<"\nCombination (nCr) = "<<comb;
    cout<<endl;
    return 0;
}

Here is its sample run with user input, 5 as value of n and 3 as value of r:

c++ program find ncr combination

Note - There are 10 ways to select 3 things out of 5.

C++ Find nPr and nCr in Single Program

This program receives the value of n and r. Then calculates and prints permutation and combination value both.

#include<iostream>
using namespace std;
int main()
{
    long long fact=1, numerator, denominator;
    int npr, ncr, n, r, i=1, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    while(i<=n)
    {
        fact = i*fact;
        i++;
    }
    numerator=fact;                   // fact = n!
    sub = n-r;
    fact=1, i=1;
    while(i<=sub)
    {
        fact = i*fact;
        i++;
    }
    denominator = fact;               // fact = (n-r)!
    npr = numerator/denominator;
    i=1, fact=1;
    while(i<=r)
    {
        fact = i*fact;
        i++;
    }
    ncr = npr/fact;                   // fact = r!
    cout<<"\nPermutation (nPr) = "<<npr;
    cout<<"\nCombination (nCr) = "<<ncr;
    cout<<endl;
    return 0;
}

Here is its sample run with same user input as provided in above program's sample run:

C++ program find ncr npr

Find nPr and nCr using for Loop

This program uses for loop (instead of while) to do the same job as of previous program.

#include<iostream>
using namespace std;
int main()
{
    long long fact, numerator, denominator;
    int npr, ncr, n, r, i, sub;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    for(i=1, fact=1; i<=n; i++)
        fact = i*fact;
    numerator=fact;                   // fact = n!
    sub = n-r;
    for(i=1, fact=1; i<=sub; i++)
        fact = i*fact;
    denominator = fact;               // fact = (n-r)!
    npr = numerator/denominator;
    for(i=1, fact=1; i<=r; i++)
        fact = i*fact;
    ncr = npr/fact;                   // fact = r!
    cout<<"\nPermutation (nPr) = "<<npr;
    cout<<"\nCombination (nCr) = "<<ncr;
    cout<<endl;
    return 0;
}

This program produces the same output as of previous program.

Find nPr and nCr using Function

This is the last program of this article, uses some user-defined functions to do the same task as of previous program.

#include<iostream>
using namespace std;
long long findFact(int);
int findNPR(int, int);
int findNCR(int, int);
int main()
{
    int npr, ncr, n, r;
    cout<<"Enter the Value of n: ";
    cin>>n;
    cout<<"Enter the Value of r: ";
    cin>>r;
    npr = findNPR(n, r);
    ncr = findNCR(n, r);
    cout<<"\nPermutation (nPr) = "<<npr;
    cout<<"\nCombination (nCr) = "<<ncr;
    cout<<endl;
    return 0;
}
long long findFact(int num)
{
    int i=1, fact=1;
    while(i<=num)
    {
        fact = i*fact;
        i++;
    }
    return fact;
}
int findNPR(int n, int r)
{
    long long numerator, denominator;
    numerator = findFact(n);
    denominator = findFact(n-r);
    return (numerator/denominator);
}
int findNCR(int n, int r)
{
    int npr, ncr;
    npr = findNPR(n, r);
    ncr = npr/findFact(r);
    return ncr;
}

Same Program in Other Languages

C++ Online Test


« Previous Program Next Program »