Given three values, N, L and R, the task is to calculate the sum of binomial coefficients (nCr) for all values of r from L to R.
Examples:
Input: N = 5, L = 0, R = 3
Output: 26
Explanation: Sum of 5C0 + 5C1 + 5C2 + 5C3 = 1 + 5 + 10 + 10 = 26.Input: N = 3, L = 3, R = 3
Output: 1
Approach(Using factorial function): Solve this problem by straightforward calculating nCr by using the formula n! / (r!(n−r)!) and calculating factorial recursively for every value of r from L to R.
Below is the implementation of the above approach:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to find the factorial // of a given number long long factorial( long long num) { if (num == 0 || num == 1) return 1; else return num * factorial(num - 1); } // Function to calculate the sum // of binomial coefficients(nCr) for // all values of r from L to R long long sumOfnCr( int n, int R, int L) { long long r; long long res = 0; for (r = L; r <= R; r++) res += (factorial(n) / (factorial(r) * factorial(n - r))); return res; } // Driver Code int main() { int N = 5, L = 0, R = 3; cout << sumOfnCr(N, R, L); return 0; } |
Java
// JAVA program for the above approach import java.io.*; class GFG { // Function to find the factorial // of a given number static long factorial( long num) { if (num == 0 || num == 1 ) return 1 ; else return num * factorial(num - 1 ); } // Function to calculate the sum // of binomial coefficients(nCr) for // all values of r from L to R static long sumOfnCr( int n, int R, int L) { long r; long res = 0 ; for (r = L; r <= R; r++) res += (factorial(n) / (factorial(r) * factorial(n - r))); return res; } // Driver Code public static void main(String[] args) { int N = 5 , L = 0 , R = 3 ; long ans = sumOfnCr(N, R, L); System.out.println(ans); } } // This code is contributed by Taranpreet |
Python3
# Python code for the above approach # Function to find the factorial # of a given number def factorial(num): if (num = = 0 or num = = 1 ): return 1 ; else : return num * factorial(num - 1 ); # Function to calculate the sum # of binomial coefficients(nCr) for # all values of r from L to R def sumOfnCr(n, R, L): res = 0 ; for r in range (L, R + 1 ): res + = (factorial(n) / (factorial(r) * factorial(n - r))); return res; # Driver Code N = 5 L = 0 R = 3 ; print (( int )(sumOfnCr(N, R, L))) # This code is contributed by gfgking |
C#
// C# program for the above approach using System; class GFG { // Function to find the factorial // of a given number static long factorial( long num) { if (num == 0 || num == 1) return 1; else return num * factorial(num - 1); } // Function to calculate the sum // of binomial coefficients(nCr) for // all values of r from L to R static long sumOfnCr( int n, int R, int L) { long r; long res = 0; for (r = L; r <= R; r++) res += (factorial(n) / (factorial(r) * factorial(n - r))); return res; } // Driver Code public static void Main() { int N = 5, L = 0, R = 3; Console.Write(sumOfnCr(N, R, L)); } } // This code is contributed by ukasp. |
Javascript
<script> // JavaScript code for the above approach // Function to find the factorial // of a given number function factorial(num) { if (num == 0 || num == 1) return 1; else return num * factorial(num - 1); } // Function to calculate the sum // of binomial coefficients(nCr) for // all values of r from L to R function sumOfnCr(n, R, L) { let r; let res = 0; for (r = L; r <= R; r++) res += (factorial(n) / (factorial(r) * factorial(n - r))); return res; } // Driver Code let N = 5, L = 0, R = 3; document.write(sumOfnCr(N, R, L)); // This code is contributed by Potta Lokesh </script> |
26
Time Complexity: O(N * (R – L))
Auxiliary Space: O(N)
Approach (Without using factorial function): This approach for finding the sum of binomial coefficients (nCr) for all values of r from L to R can be implemented using two nested loops. The outer loop will iterate from L to R, and the inner loop will calculate the binomial coefficient for each value of r using the formula:
nCr = n! / (r! * (n-r)!)
where n is the given number, r is the current value of the inner loop, and ! denotes the factorial function.
The sum of all binomial coefficients can be accumulated in a variable initialized to zero before the loops start.
Steps to implement the above approach:
- Declare and initialize the variables N, L, and R respectively.
- Call the sumOfnCr function, passing N, R, and L as arguments.
- Within the sumOfnCr function, declare a long long variable named res and initialize it to 0.
- Start a for loop with a variable r, which runs from L to R.
- Within the for loop, declare a long long variable named nCr and initialize it to 1.
- Start another for loop with a variable i, which runs from 1 to r.
- Within the inner for loop, multiply nCr by (n-i+1) and then divide it by i.
- After the inner for loop ends, add nCr to the res variable.
- After the outer for loop ends, return the res variable.
- End the sumOfnCr function.
- Print the result of the sumOfnCr function using cout.
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to calculate the sum // of binomial coefficients(nCr) for // all values of r from L to R long long sumOfnCr( int n, int R, int L) { long long res = 0; for ( int r = L; r <= R; r++) { long long nCr = 1; for ( int i = 1; i <= r; i++) { nCr *= (n - i + 1); nCr /= i; } res += nCr; } return res; } // Driver Code int main() { int N = 5, L = 0, R = 3; cout << sumOfnCr(N, R, L); return 0; } |
Java
import java.math.BigInteger; public class BinomialCoefficientSum { // Function to calculate the sum of binomial coefficients (nCr) // for all values of r from L to R public static BigInteger sumOfnCr( int n, int R, int L) { // Initialize the result as zero BigInteger res = BigInteger.ZERO; // Iterate through all values of r from L to R for ( int r = L; r <= R; r++) { // Initialize nCr as 1 BigInteger nCr = BigInteger.ONE; // Calculate nCr using multiplicative formula for ( int i = 1 ; i <= r; i++) { // Multiplicative formula for nCr: nCr = (n - i + 1) / i * nCr nCr = nCr.multiply(BigInteger.valueOf(n - i + 1 )).divide(BigInteger.valueOf(i)); } // Add the calculated nCr to the result res = res.add(nCr); } // Return the final result return res; } public static void main(String[] args) { // Input values int N = 5 , L = 0 , R = 3 ; // Calculate and print the sum of binomial coefficients System.out.println(sumOfnCr(N, R, L)); } } |
Python3
# Function to calculate the sum # of binomial coefficients(nCr) for # all values of r from L to R def sumOfnCr(n, R, L): res = 0 for r in range (L, R + 1 ): nCr = 1 for i in range ( 1 , r + 1 ): nCr * = (n - i + 1 ) nCr / / = i res + = nCr return res # Driver Code N = 5 L = 0 R = 3 print (sumOfnCr(N, R, L)) |
C#
using System; class Program { // Function to calculate the sum of binomial coefficients(nCr) for // all values of r from L to R static long SumOfnCr( int n, int R, int L) { long res = 0; for ( int r = L; r <= R; r++) { long nCr = 1; for ( int i = 1; i <= r; i++) { nCr *= (n - i + 1); nCr /= i; } res += nCr; } return res; } static void Main( string [] args) { int N = 5, L = 0, R = 3; Console.WriteLine(SumOfnCr(N, R, L)); } } // This code is contributed by shivamgupta310570 |
Javascript
// Javascript code addition // Function to calculate the sum // of binomial coefficients(nCr) for // all values of r from L to R function sumOfnCr(n, R, L) { let res = 0; for (let r = L; r <= R; r++) { let nCr = 1; for (let i = 1; i <= r; i++) { nCr *= (n - i + 1); nCr /= i; } res += nCr; } return res; } // Driver Code let N = 5, L = 0, R = 3; console.log(sumOfnCr(N, R, L)); // The code is contributed by Nidhi goel. |
26
Time Complexity: O(N * (R – L))
Auxiliary Space: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!