Middle term in the binomial expansion series - GeeksforGeeks

14 Apr, 2021
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 XrIf 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-mXmif 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++
Java
Python3
C#
PHP
Javascript
// C++ program to find the middle term// in binomial expansion series.#include <bits/stdc++.h>using namespace std; // function to calculate// factorial of a numberint 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 codeint main(){    int n = 5, A = 2, X = 3;         // function call    findMiddleTerm(A, X, n);     return 0;}
// 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 program to find the middle term# in binomial expansion series.import math # function to calculate# factorial of a numberdef 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 coden = 5A = 2X = 3 # function callfindMiddleTerm(A, X, n) # This code is contributed by# manishshaw1.
// 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 program to find the middle term// in binomial expansion series. // function to calculate// factorial of a numberfunction 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.?>
<script> // JavaScript program to find the middle term// in binomial expansion series. // function to calculate// factorial of a numberfunction factorial(n){    let fact = 1;    for (let i = 1; i <= n; i++)        fact *= i;             return fact;} // Function to find middle term in// binomial expansion series.function findMiddleTerm(A, X, n){    let i, j, aPow, xPow;    let middleTerm1, middleTerm2;     if (n % 2 == 0)    {        // If n is even                 // calculating the middle term        i = Math.floor(n / 2);         // calculating the value of A to        // the power k and X to the power k        aPow = Math.floor(Math.pow(A, n - i));        xPow = Math.floor(Math.pow(X, i));         middleTerm1 = Math.floor(factorial(n) /        (factorial(n - i) * factorial(i)))                            * aPow * xPow;                                         document.write("MiddleTerm = "            + middleTerm1 + "<br>");    }    else {         // If n is odd                 // calculating the middle term        i = Math.floor((n - 1) / 2);        j = Math.floor((n + 1) / 2);         // calculating the value of A to the        // power k and X to the power k        aPow = Math.floor(Math.pow(A, n - i));        xPow = Math.floor(Math.pow(X, i));         middleTerm1 = Math.floor(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 = Math.floor(Math.pow(A, n - j));        xPow = Math.floor(Math.pow(X, j));         middleTerm2 = Math.floor(factorial(n) /        (factorial(n - j) * factorial(j)))                            * aPow * xPow;         document.write("MiddleTerm1 = "                    + middleTerm1 + "<br>");                                 document.write("MiddleTerm2 = "                    + middleTerm2 + "<br>");    }} // Driver code     let n = 5, A = 2, X = 3;         // function call    findMiddleTerm(A, X, n); // This code is contributed by Surbhi Tyagi. </script>
MiddleTerm1 = 720
MiddleTerm2 = 1080
 
vt_m
manishshaw1
surbhityagi15
binomial coefficient
series
Mathematical
Mathematical
series
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program to print prime numbers from 1 to N.
Segment Tree | Set 1 (Sum of given range)
Modular multiplicative inverse
Count all possible paths from top left to bottom right of a mXn matrix
Fizz Buzz Implementation
Check if a number is Palindrome
Program to multiply two matrices
Merge two sorted arrays with O(1) extra space
Generate all permutation of a set in Python
Count ways to reach the n'th stair