# C Program to Find nCr and nPr

« Previous Program Next Program »

In this tutorial, you will learn and get code about finding nCr (Combination) and nPr (Permutation) using a C program. But before going through the program, let's first understand about its formula.

### nPr Formula

Let's suppose there are n number of players, in which we have to arrange r number of players. Therefore, to arrange r things out of n, use permutation formula:

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

Note - Permutation value shows the ways to arrange r things out of n

### nCr Formula

Let's suppose there are n number of players, in which we have to select r number of players. Therefore, to select r things out of n, use combination formula:

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

Note - Combination value shows the ways to select r things out of n

## Find nCr and nPr in C

To find nCr and nPr in C programming, you have to ask from user to enter the value of n and r to find the nCr and nPr value as shown in the program given below.

### C Program to Find nPr

Let's first create a program to calculate permutation (nPr):

```#include<stdio.h>
#include<conio.h>
int main()
{
long long fact=1, numerator, denominator;
int perm, n, r, i=1, sub;
printf("Enter the value of n: ");
scanf("%d", &n);
printf("Enter the value of r: ");
scanf("%d", &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;
printf("\nPermutation = %d", perm);
getch();
return 0;
}```

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

Now supply the value of n say 15 and then the value of r say 3. To find the total number of ways to arrange 3 things out of 15 as shown below:

The statement:

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

is used to find the factorial of n. Later, the similar statement is used to find the factorial of sub (that equals n-r). The factorial of n is initialized to numerator and factorial of sub or (n-r) is initialized to denominator variables respectively. Using the permutation formula as given above, just divide it and initialize the value to perm. Finally print perm's value as permutation value on output.

### C Program to Find nCr

Here is another program to find combination (nCr):

```#include<stdio.h>
#include<conio.h>
int main()
{
long long fact=1, numerator, denominator;
int comb, n, r, i=1, sub;
printf("Enter the value of n: ");
scanf("%d", &n);
printf("Enter the value of r: ");
scanf("%d", &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;
printf("\nCombination = %d", comb);
getch();
return 0;
}```

Here is its sample run:

In addition to the permutation program given above, here we have calculated the factorial of r also. Because, in previous program, denominator holds the factorial of (n-r) therefore we have initialized r!(n-r)! to denominator here. And finally using the combination formula, divides the numerator value with denominator, that is n!/r!(n-r)! and initialized it to comb variable. Print comb as combination value on output.

### Find nCr and nPr using Function

This is the last program on permutation and combination. This program created using user-defined function to find the value of nCr and nPr

```#include<stdio.h>
#include<conio.h>
long long findFact(int);
long long findPerm(int, int);
long long findComb(int, int);
int main()
{
int comb, perm, n, r;
printf("Enter the value of n: ");
scanf("%d", &n);
printf("Enter the value of r: ");
scanf("%d", &r);
perm = findPerm(n, r);
comb = findComb(n, r);
printf("\nPermutation = %d", perm);
printf("\nCombination = %d", comb);
getch();
return 0;
}
long long findFact(int num)
{
int i=1;
long long fact=1;
while(i<=num)
{
fact = i*fact;
i++;
}
return fact;
}
long long findPerm(int n, int r)
{
int sub;
long long numt, dent;
sub = n-r;
numt = findFact(n);
dent = findFact(sub);
return numt/dent;
}
long long findComb(int n, int r)
{
int sub;
long long numt, dent, temp;
sub = n-r;
numt = findFact(n);
temp = findFact(sub);
dent = temp*findFact(r);
return numt/dent;
}```

Here is its sample run:

#### Same Program in Other Languages

C Online Test

« Previous Program Next Program »