# 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:

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:

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:

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:

### 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 »

Like/Share Us on Facebook 😋