Skip to content
Related Articles

Related Articles

Middle term in the binomial expansion series
  • Difficulty Level : Hard
  • Last Updated : 25 Jun, 2018

Given three integers A, X, and n. The task is to find the middle term in the binomial expansion series.

Examples:

Input : A = 1, X = 1, n = 6
Output : MiddleTerm = 20

Input : A = 2, X = 4, n = 7
Output : MiddleTerm1 = 35840, MiddleTerm2 = 71680

Approach


(A + X)n = nC0 An X0 + nC1 An-1 X1 + nC2 An-2 X2 + ……… + nCn-1 A1 Xn-1 + nCn A0 Xn

Total number of term in the binomial expansion of (A + X)n is (n + 1).

General term in binomial expansion is given by:
Tr+1 = nCr An-r Xr



If n is even number:
Let m be the middle term of binomial expansion series, then
n = 2m
m = n / 2
We know that there will be n + 1 term so,
n + 1 = 2m +1
In this case, there will is only one middle term. This middle term is (m + 1)th term.
Hence, the middle term
Tm+1 = nCmAn-mXm

if n is odd number:
Let m be the middle term of binomial expansion series, then
let n = 2m + 1
m = (n-1) / 2
number of terms = n + 1 = 2m + 1 + 1 = 2m + 2
In this case there will be two middle terms. These middle terms will be (m + 1)th and (m + 2)th term.
Hence, the middle terms are :
Tm+1 = nC(n-1)/2 A(n+1)/2 X(n-1)/2
Tm+2 = nC(n+1)/2 A(n-1)/2 X(n+1)/2

C++




// C++ program to find the middle term
// in binomial expansion series. 
#include <bits/stdc++.h>
using namespace std;
  
// function to calculate 
// factorial of a number
int factorial(int n)
{  
    int fact = 1;
    for (int i = 1; i <= n; i++)
        fact *= i;
         
    return fact;
}
  
// Function to find middle term in 
// binomial expansion series.
void findMiddleTerm(int A, int X, int n)
{
    int i, j, aPow, xPow;
    float middleTerm1, middleTerm2;
  
    if (n % 2 == 0) 
    {
        // If n is even
          
        // calculating the middle term
        i = n / 2;
  
        // calculating the value of A to 
        // the power k and X to the power k
        aPow = (int)pow(A, n - i);
        xPow = (int)pow(X, i);
  
        middleTerm1 = ((float)factorial(n) / 
          (factorial(n - i) * factorial(i)))
                              * aPow * xPow;
                                
        cout << "MiddleTerm = "
             << middleTerm1 << endl;
    }
    else {
  
        // If n is odd
          
        // calculating the middle term
        i = (n - 1) / 2;
        j = (n + 1) / 2;
  
        // calculating the value of A to the 
        // power k and X to the power k
        aPow = (int)pow(A, n - i);
        xPow = (int)pow(X, i);
  
        middleTerm1 = ((float)factorial(n) / 
           (factorial(n - i) * factorial(i)))
                               * aPow * xPow;
  
        // calculating the value of A to the
        // power k and X to the power k
        aPow = (int)pow(A, n - j);
        xPow = (int)pow(X, j);
  
        middleTerm2 = ((float)factorial(n) / 
           (factorial(n - j) * factorial(j)))
                               * aPow * xPow;
  
        cout << "MiddleTerm1 = "
                      << middleTerm1 << endl;
                        
        cout << "MiddleTerm2 = "
                      << middleTerm2 << endl;
    }
}
  
// Driver code
int main()
{
    int n = 5, A = 2, X = 3;
      
    // function call
    findMiddleTerm(A, X, n);
  
    return 0;
}


Java




// Java program to find the middle term
// in binomial expansion series.
import java.math.*;
  
class GFG {
  
    // function to calculate factorial
    // of a number
    static int factorial(int n)
    {
        int fact = 1, i;
        if (n == 0)
            return 1;
        for (i = 1; i <= n; i++)
            fact *= i;
              
        return fact;
    }
      
    // Function to find middle term in 
    // binomial expansion series.
    static void findmiddle(int A, int X, int n)
    {
        int i, j, aPow, xPow;
        float middleTerm1, middleTerm2;
  
        if (n % 2 == 0)
        {
            // If n is even
              
            // calculating the middle term
            i = n / 2;
  
            // calculating the value of A to 
            // the power k and X to the power k
            aPow = (int)Math.pow(A, n - i);
            xPow = (int)Math.pow(X, i);
      
            middleTerm1 = ((float)factorial(n) / 
              (factorial(n - i) * factorial(i)))
                                  * aPow * xPow;
            System.out.println("MiddleTerm = "
                                 + middleTerm1);
        }
        else {
              
            // If n is odd
  
            // calculating the middle term
            i = (n - 1) / 2;
            j = (n + 1) / 2;
  
            // calculating the value of A to the 
            // power k and X to the power k
            aPow = (int)Math.pow(A, n - i);
            xPow = (int)Math.pow(X, i);
      
            middleTerm1 = ((float)factorial(n) / 
               (factorial(n - i) * factorial(i)))
                                   * aPow * xPow;
      
            // calculating the value of A to the
            // power k and X to the power k
            aPow = (int)Math.pow(A, n - j);
            xPow = (int)Math.pow(X, j);
      
            middleTerm2 = ((float)factorial(n) / 
               (factorial(n - j) * factorial(j)))
                                   * aPow * xPow;
  
            System.out.println("MiddleTerm1 = "
                                  + middleTerm1);
                    
            System.out.println("MiddleTerm2 = "
                                  + middleTerm2);
        }
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int n = 6, A = 2, X = 4;
  
        // calling the function
        findmiddle(A, X, n);
    }
}


Python3




# Python3 program to find the middle term
# in binomial expansion series. 
import math
  
# function to calculate 
# factorial of a number
def factorial(n) :
      
    fact = 1
    for i in range(1, n+1) :
        fact = fact * i
  
    return fact;
  
# Function to find middle term in 
# binomial expansion series.
def findMiddleTerm(A, X, n) :
  
    if (n % 2 == 0) :
          
        # If n is even
          
        # calculating the middle term
        i = int(n / 2)
  
        # calculating the value of A to 
        # the power k and X to the power k
        aPow = int(math.pow(A, n - i))
        xPow = int(math.pow(X, i))
  
        middleTerm1 = ((math.factorial(n) /
                       (math.factorial(n - i) 
                       * math.factorial(i))) 
                       * aPow * xPow)
                                  
        print ("MiddleTerm = {}" .
                     format(middleTerm1))
  
    else :
  
        # If n is odd
          
        # calculating the middle term
        i = int((n - 1) / 2)
        j = int((n + 1) / 2)
  
        # calculating the value of A to the 
        # power k and X to the power k
        aPow = int(math.pow(A, n - i))
        xPow = int(math.pow(X, i))
  
        middleTerm1 = ((math.factorial(n) 
                    / (math.factorial(n - i) 
                    * math.factorial(i)))
                        * aPow * xPow)
  
        # calculating the value of A to the
        # power k and X to the power k
        aPow = int(math.pow(A, n - j))
        xPow = int(math.pow(X, j))
  
        middleTerm2 = ((math.factorial(n) 
                   / (math.factorial(n - j)
                   * math.factorial(j))) 
                      * aPow * xPow)
  
        print ("MiddleTerm1 = {}" .
               format(int(middleTerm1)))
                          
        print ("MiddleTerm2 = {}" .
               format(int(middleTerm2)))
  
# Driver code
n = 5
A = 2
X = 3
  
# function call
findMiddleTerm(A, X, n)
  
# This code is contributed by 
# manishshaw1.


C#




// C# program to find the middle term
// in binomial expansion series.
using System;
  
class GFG {
  
    // function to calculate factorial
    // of a number
    static int factorial(int n)
    {
        int fact = 1, i;
        if (n == 0)
            return 1;
        for (i = 1; i <= n; i++)
            fact *= i;
              
        return fact;
    }
      
    // Function to find middle term in 
    // binomial expansion series.
    static void findmiddle(int A, int X, int n)
    {
        int i, j, aPow, xPow;
        float middleTerm1, middleTerm2;
  
        if (n % 2 == 0)
        {
            // If n is even
              
            // calculating the middle term
            i = n / 2;
  
            // calculating the value of A to 
            // the power k and X to the power k
            aPow = (int)Math.Pow(A, n - i);
            xPow = (int)Math.Pow(X, i);
      
            middleTerm1 = ((float)factorial(n) / 
            (factorial(n - i) * factorial(i)))
                                * aPow * xPow;
            Console.WriteLine("MiddleTerm = "
                                + middleTerm1);
        }
        else {
              
            // If n is odd
  
            // calculating the middle term
            i = (n - 1) / 2;
            j = (n + 1) / 2;
  
            // calculating the value of A to the 
            // power k and X to the power k
            aPow = (int)Math.Pow(A, n - i);
            xPow = (int)Math.Pow(X, i);
      
            middleTerm1 = ((float)factorial(n) / 
            (factorial(n - i) * factorial(i)))
                                * aPow * xPow;
      
            // calculating the value of A to the
            // power k and X to the power k
            aPow = (int)Math.Pow(A, n - j);
            xPow = (int)Math.Pow(X, j);
      
            middleTerm2 = ((float)factorial(n) / 
            (factorial(n - j) * factorial(j)))
                                * aPow * xPow;
  
            Console.WriteLine("MiddleTerm1 = "
                                + middleTerm1);
                  
            Console.WriteLine("MiddleTerm2 = "
                                + middleTerm2);
        }
    }
  
    // Driver code
    public static void Main()
    {
        int n = 5, A = 2, X = 3;
  
        // calling the function
        findmiddle(A, X, n);
    }
}
  
// This code is contributed by anuj_67.


PHP




<?php
// PHP program to find the middle term
// in binomial expansion series. 
  
// function to calculate 
// factorial of a number
function factorial(int $n)
    $fact = 1;
    for($i = 1; $i <= $n; $i++)
        $fact *= $i;
          
    return $fact;
}
  
// Function to find middle term in 
// binomial expansion series.
function findMiddleTerm($A, $X, $n)
{
    $i; $j
    $aPow; $xPow;
    $middleTerm1;
    $middleTerm2;
  
    if ($n % 2 == 0) 
    {
          
        // If n is even
        // calculating the middle term
        $i = $n / 2;
  
        // calculating the value of A to 
        // the power k and X to the power k
        $aPow = pow($A, $n - i);
        $xPow = pow($X, $i);
  
        $middleTerm1 = $factorial($n) / 
        (factorial($n - $i) * factorial($i))
                            * $aPow * $xPow;
                              
        echo "MiddleTerm = ","\n",
            $middleTerm1 ;
    }
    else 
    {
  
        // If n is odd
          
        // calculating the middle term
        $i = ($n - 1) / 2;
        $j = ($n + 1) / 2;
  
        // calculating the value of A to the 
        // power k and X to the power k
        $aPow = pow($A, $n - $i);
        $xPow = pow($X, $i);
  
        $middleTerm1 = ((float)factorial($n) / 
        (factorial($n - $i) * factorial($i)))
                            * $aPow * $xPow;
  
        // calculating the value of A to the
        // power k and X to the power k
        $aPow = pow($A, $n - $j);
        $xPow = pow($X, $j);
  
        $middleTerm2 = factorial($n) / 
        (factorial($n - $j) * factorial($j))
                            * $aPow * $xPow;
  
        echo "MiddleTerm1 = "
                    , $middleTerm1,"\n" ;
                      
        echo "MiddleTerm2 = "
                    , $middleTerm2 ;
    }
}
  
    // Driver code
    $n = 5; 
    $A = 2;
    $X = 3;
      
    // function call
    findMiddleTerm($A, $X, $n);
  
// This code is contributed by Vishal Tripathi.
?>


Output:

MiddleTerm1 = 720
MiddleTerm2 = 1080

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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :