Calculate nCr using Pascal’s Triangle
A useful application of Pascal’s triangle is the calculation of combinations. The formula to find nCr is n! / r! * (n – r)! which is also the formula for a cell of Pascal’s triangle.
Input: n = 5, r = 3
Output: 10
n! / r! * (n – r)! = 5! / 3! * (2!) = 120 / 12 = 10Input: n = 7, r = 2
Output: 21
Approach: The idea is to store the Pascal’s triangle in a matrix then the value of nCr will be the value of the cell at nth row and rth column.
Below is the implementation of the above approach:
# Python3 implementation of the approach # Initialize the matrix with 0 l = [[ 0 for i in range ( 1001 )] for j in range ( 1001 )] def initialize(): # 0C0 = 1 l[ 0 ][ 0 ] = 1 for i in range ( 1 , 1001 ): # Set every nCr = 1 where r = 0 l[i][ 0 ] = 1 for j in range ( 1 , i + 1 ): # Value for the current cell of Pascal's triangle l[i][j] = (l[i - 1 ][j - 1 ] + l[i - 1 ][j]) # Function to return the value of nCr def nCr(n, r): # Build the Pascal's triangle initialize() # Return nCr return l[n][r] # Driver code n = 8 r = 3 print (nCr(n, r)) |
56
Recommended Posts:
- Program to calculate the Area and Perimeter of Incircle of an Equilateral Triangle
- Biggest Reuleaux Triangle within a Square which is inscribed within a Right angle Triangle
- Biggest Reuleaux Triangle inscribed within a Square inscribed in an equilateral triangle
- Program to calculate value of nCr
- Calculate the Discriminant Value
- C program to calculate the value of nPr
- Program to calculate the value of sin(x) and cos(x)
- Program to calculate the value of nCr Efficiently
- Efficient program to calculate e^x
- Write a program to calculate pow(x,n)
- Calculate area of pentagon with given diagonal
- Program to calculate GST from original and net prices
- Calculate speed, distance and time
- Program to calculate distance between two points in 3 D
- Program to calculate Profit Or Loss
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.