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

 `// C++ program to find the middle term ` `// in binomial expansion series.  ` `#include ` `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

 ` `

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

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.