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++ 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 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 |
# 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# 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. |
<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++ 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;
} |
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));
}
} |
# 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))
|
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 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)