Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Sum of product of consecutive Binomial Coefficients

  • Difficulty Level : Medium
  • Last Updated : 04 Oct, 2021

Given a positive integer n. The task is to find the sum of product of consecutive binomial coefficient i.e 
nC0*nC1 + nC1*nC2 + ….. + nCn-1*nCn 

Examples:  

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Input : n = 3
Output : 15
3C0*3C1 + 3C1*3C2 +3C2*3C3
= 1*3 + 3*3 + 3*1
= 3 + 9 + 3
= 15

Input : n = 4
Output : 56

Method 1: The idea is to find all the binomial coefficients up to nth term and find the sum of the product of consecutive coefficients. 



Below is the implementation of this approach: 

C++




// CPP Program to find sum of product of
// consecutive Binomial Coefficient.
#include <bits/stdc++.h>
using namespace std;
#define MAX 100
 
// Find the binomial coefficient upto nth term
void binomialCoeff(int C[], int n)
{
    C[0] = 1; // nC0 is 1
 
    for (int i = 1; i <= n; i++) {
 
        // Compute next row of pascal triangle using
        // the previous row
        for (int j = min(i, n); j > 0; j--)
            C[j] = C[j] + C[j - 1];
    }
}
 
// Return the sum of the product of
// consecutive binomial coefficient.
int sumOfproduct(int n)
{
    int sum = 0;
    int C[MAX] = { 0 };
 
    binomialCoeff(C, n);
 
    // finding the sum of product of
    // consecutive coefficient.
    for (int i = 0; i <= n; i++)
        sum += C[i] * C[i + 1];   
 
    return sum;
}
 
// Driven Program
int main()
{
    int n = 3;
    cout << sumOfproduct(n) << endl;
    return 0;
}

Java




// Java Program to find sum of product of
// consecutive Binomial Coefficient.
 
import java.io.*;
 
class GFG {
    
static int  MAX = 100;
 
// Find the binomial coefficient upto nth term
static void binomialCoeff(int C[], int n)
{
    C[0] = 1; // nC0 is 1
 
    for (int i = 1; i <= n; i++) {
 
        // Compute next row of pascal triangle using
        // the previous row
        for (int j = Math.min(i, n); j > 0; j--)
            C[j] = C[j] + C[j - 1];
    }
}
 
// Return the sum of the product of
// consecutive binomial coefficient.
static int sumOfproduct(int n)
{
    int sum = 0;
    int C[] = new int[MAX];
 
    binomialCoeff(C, n);
 
    // finding the sum of product of
    // consecutive coefficient.
    for (int i = 0; i <= n; i++)
        sum += C[i] * C[i + 1];
 
    return sum;
}
 
// Driven Program
 
    public static void main (String[] args) {
    int n = 3;
    System.out.println( sumOfproduct(n));
    }
}
  
// This code is contributed by inder_verma..

Python3




# Python3 Program to find sum of product
# of consecutive Binomial Coefficient.
MAX = 100;
 
# Find the binomial coefficient upto
# nth term
def binomialCoeff(C, n):
 
    C[0] = 1; # nC0 is 1
 
    for i in range(1, n + 1):
 
        # Compute next row of
        # pascal triangle using
        # the previous row
        for j in range(min(i, n), 0, -1):
            C[j] = C[j] + C[j - 1];
     
    return C;
 
# Return the sum of the product of
# consecutive binomial coefficient.
def sumOfproduct(n):
 
    sum = 0;
    C = [0] * MAX;
 
    C = binomialCoeff(C, n);
 
    # finding the sum of
    # product of consecutive
    # coefficient.
    for i in range(n + 1):
        sum += C[i] * C[i + 1];
 
    return sum;
 
# Driver Code
n = 3;
print(sumOfproduct(n));
 
# This code is contributed by mits

C#




// C# Program to find sum of
// product of consecutive
// Binomial Coefficient.
using System;
 
class GFG
{
static int MAX = 100;
 
// Find the binomial coefficient
// upto nth term
static void binomialCoeff(int []C, int n)
{
    C[0] = 1; // nC0 is 1
 
    for (int i = 1; i <= n; i++)
    {
 
        // Compute next row of pascal
        // triangle using the previous row
        for (int j = Math.Min(i, n);
                 j > 0; j--)
            C[j] = C[j] + C[j - 1];
    }
}
 
// Return the sum of the product of
// consecutive binomial coefficient.
static int sumOfproduct(int n)
{
    int sum = 0;
    int []C = new int[MAX];
 
    binomialCoeff(C, n);
 
    // finding the sum of product of
    // consecutive coefficient.
    for (int i = 0; i <= n; i++)
        sum += C[i] * C[i + 1];
 
    return sum;
}
 
// Driven Code
public static void Main ()
{
    int n = 3;
    Console.WriteLine(sumOfproduct(n));
}
}
 
// This code is contributed by anuj_67

PHP




<?php
// PHP Program to find sum
// of product of consecutive
// Binomial Coefficient.
$MAX = 100;
 
// Find the binomial
// coefficient upto
// nth term
function binomialCoeff($C, $n)
{
    $C[0] = 1; // nC0 is 1
 
    for ($i = 1;
         $i <= $n; $i++)
    {
 
        // Compute next row of
        // pascal triangle using
        // the previous row
        for ($j = min($i, $n);
             $j > 0; $j--)
            $C[$j] = $C[$j] +
                     $C[$j - 1];
    }
    return $C;
}
 
// Return the sum of the
// product of consecutive
// binomial coefficient.
function sumOfproduct($n)
{
    global $MAX;
    $sum = 0;
    $C = array_fill(0, $MAX, 0);
 
    $C = binomialCoeff($C, $n);
 
    // finding the sum of
    // product of consecutive
    // coefficient.
    for ($i = 0; $i <= $n; $i++)
        $sum += $C[$i] * $C[$i + 1];
 
    return $sum;
}
 
// Driver Code
$n = 3;
echo sumOfproduct($n);
 
// This code is contributed by mits
?>

Javascript




<script>
 
// Javascript Program to find sum of product of
// consecutive Binomial Coefficient.
var MAX = 100;
 
// Find the binomial coefficient upto nth term
function binomialCoeff(C, n)
{
    C[0] = 1; // nC0 is 1
 
    for (var i = 1; i <= n; i++) {
 
        // Compute next row of pascal triangle using
        // the previous row
        for (var j = Math.min(i, n); j > 0; j--)
            C[j] = C[j] + C[j - 1];
    }
}
 
// Return the sum of the product of
// consecutive binomial coefficient.
function sumOfproduct(n)
{
    var sum = 0;
    var C = Array(MAX).fill(0);
 
    binomialCoeff(C, n);
 
    // finding the sum of product of
    // consecutive coefficient.
    for (var i = 0; i <= n; i++)
        sum += C[i] * C[i + 1];   
 
    return sum;
}
 
// Driven Program
var n = 3;
document.write( sumOfproduct(n));
 
</script>

Output  

15

Method 2: 
We know, 
(1 + x)n = nC0 + nC1*x + nC2*x2 + …. + nCn*xn … (1)
(1 + 1/x)n = nC0 + nC1/x + nC2/x2 + …. + nCn/xn … (2)
Multiplying (1) and (2), we get 
(1 + x)2n/xn = (nC0 + nC1*x + nC2*x2 + …. + nCn*xn) * (nC0 + nC1/x + nC2/x2 + …. + nCn/xn)
(2nC0 + 2nC1*x + 2nC2*x2 + …. + 2nCn*xn)/xn = (nC0 + nC1*x + nC2*x2 + …. + nCn*xn) * (nC0 + nC1/x + nC2/x2 + …. + nCn/xn)
Now, find the coefficient of x in LHS, 
Observe rth term of expansion in numerator is 2nCrxr
To find the coefficient of x in (1 + x)2n/xn, r should be n + 1, because power of x in denominator will reduce it. 
So, coefficient of x in LHS = 2nCn + 1 or 2nCn – 1
Now, find the coefficient of x in RHS, 
r th term of first expansion of multiplication is nCr * xr 
t th term of second expansion of multiplication is nCt / xt 
So term after multiply will be nCr * xr * nCt / xt or 
nCr * nCt * xr / xt 
Put r = t + 1, we get, 
nCt+1 * nCt * x 
Observe there will be n such term in the expansion of multiply, so t range from 0 to n – 1. 
Therefore, coefficient of x in RHS = nC0*nC1 + nC1*nC2 + ….. + nCn-1*nCn
Comparing coefficient of x in LHS and RHS, we can say, 
nC0*nC1 + nC1*nC2 + ….. + nCn-1*nCn = 2nCn – 1

Below is implementation of this approach:  

C++




// CPP Program to find sum of product of
// consecutive Binomial Coefficient.
#include <bits/stdc++.h>
using namespace std;
#define MAX 100
 
// Find the binomial coefficient up to nth
// term
int binomialCoeff(int n, int k)
{
    int C[k + 1];
    memset(C, 0, sizeof(C));
 
    C[0] = 1; // nC0 is 1
 
    for (int i = 1; i <= n; i++) {
 
        // Compute next row of pascal triangle
        // using the previous row
        for (int j = min(i, k); j > 0; j--)
            C[j] = C[j] + C[j - 1];
    }
    return C[k];
}
 
// Return the sum of the product of
// consecutive binomial coefficient.
int sumOfproduct(int n)
{
    return binomialCoeff(2 * n, n - 1);
}
 
// Driven Program
int main()
{
    int n = 3;
 
    cout << sumOfproduct(n) << endl;
    return 0;
}

Java




// Java Program to find sum of
// product of consecutive
// Binomial Coefficient.
import java.io.*;
 
class GFG
{
    static int MAX = 100;
     
    // Find the binomial coefficient
    // up to nth term
    static int binomialCoeff(int n,
                             int k)
    {
        int C[] = new int[k + 1];
         
        // memset(C, 0, sizeof(C));
        C[0] = 1; // nC0 is 1
 
        for (int i = 1; i <= n; i++)
        {
 
            // Compute next row of
            // pascal triangle
            // using the previous row
            for (int j = Math.min(i, k); j > 0; j--)
                C[j] = C[j] + C[j - 1];
    }
     
    return C[k];
}
 
// Return the sum of the
// product of consecutive
// binomial coefficient.
static int sumOfproduct(int n)
{
    return binomialCoeff(2 * n,
                         n - 1);
}
 
// Driver Code
public static void main (String[] args)
{
    int n = 3;
    System.out.println(sumOfproduct(n));
}
}
 
// This code is contributed
// by shiv_bhakt.

Python3




# Python3 Program to find sum of product
# of consecutive Binomial Coefficient.
MAX = 100;
 
# Find the binomial coefficient
# up to nth term
def binomialCoeff(n, k):
 
    C = [0] * (k + 1);
 
    C[0] = 1; # nC0 is 1
 
    for i in range(1, n + 1):
 
        # Compute next row of pascal triangle
        # using the previous row
        for j in range(min(i, k), 0, -1):
            C[j] = C[j] + C[j - 1];
    return C[k];
 
# Return the sum of the product of
# consecutive binomial coefficient.
def sumOfproduct(n):
    return binomialCoeff(2 * n, n - 1);
 
# Driver Code
n = 3;
print(sumOfproduct(n));
 
# This code is contributed by mits

C#




// C# Program to find sum of
// product of consecutive
// Binomial Coefficient.
using System;
 
class GFG
{
     
    // Find the binomial
    // coefficient up to
    // nth term
    static int binomialCoeff(int n,
                             int k)
    {
        int []C = new int[k + 1];
         
        // memset(C, 0, sizeof(C));
        C[0] = 1; // nC0 is 1
 
        for (int i = 1; i <= n; i++)
        {
 
            // Compute next row of
            // pascal triangle
            // using the previous row
            for (int j = Math.Min(i, k);
                             j > 0; j--)
                C[j] = C[j] + C[j - 1];
    }
     
    return C[k];
}
 
// Return the sum of the
// product of consecutive
// binomial coefficient.
static int sumOfproduct(int n)
{
    return binomialCoeff(2 * n,
                         n - 1);
}
 
// Driver Code
static public void Main ()
{
    int n = 3;
    Console.WriteLine(sumOfproduct(n));
}
}
 
// This code is contributed
// by @ajit.

PHP




<?php
// PHP Program to find sum of product of
// consecutive Binomial Coefficient.
$MAX = 100;
 
// Find the binomial coefficient
// up to nth term
function binomialCoeff($n, $k)
{
    $C = array_fill(0, ($k + 1), 0);
 
    $C[0] = 1; // nC0 is 1
 
    for ($i = 1; $i <= $n; $i++)
    {
 
        // Compute next row of pascal triangle
        // using the previous row
        for ($j = min($i, $k); $j > 0; $j--)
            $C[$j] = $C[$j] + $C[$j - 1];
    }
    return $C[$k];
}
 
// Return the sum of the product of
// consecutive binomial coefficient.
function sumOfproduct($n)
{
    return binomialCoeff(2 * $n, $n - 1);
}
 
// Driver Code
$n = 3;
echo sumOfproduct($n);
 
// This code is contributed by mits
?>

Javascript




<script>
    // Javascript Program to find sum of
    // product of consecutive
    // Binomial Coefficient.
     
    let MAX = 100;
      
    // Find the binomial coefficient
    // up to nth term
    function binomialCoeff(n, k)
    {
        let C = new Array(k + 1);
        C.fill(0);
          
        // memset(C, 0, sizeof(C));
        C[0] = 1; // nC0 is 1
  
        for (let i = 1; i <= n; i++)
        {
  
            // Compute next row of
            // pascal triangle
            // using the previous row
            for (let j = Math.min(i, k); j > 0; j--)
                C[j] = C[j] + C[j - 1];
        }
 
        return C[k];
  }
 
  // Return the sum of the
  // product of consecutive
  // binomial coefficient.
  function sumOfproduct(n)
  {
      return binomialCoeff(2 * n, n - 1);
  }
   
  let n = 3;
  document.write(sumOfproduct(n));
 
// This code is contributed by suresh07.
</script>

Output:  

15

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!