Middle term in the binomial expansion series

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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.
?>

chevron_right


Output:

MiddleTerm1 = 720
MiddleTerm2 = 1080


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.



Improved By : vt_m, manishshaw1