Program to print binomial expansion series
Given three integers, A, X and n, the task is to print terms of below binomial expression series.
(A+X)n = nC0AnX0 + nC1An-1X1 + nC2An-2X2 +….+ nCnA0Xn
Examples:
Input : A = 1, X = 1, n = 5
Output : 1 5 10 10 5 1
Input : A = 1, B = 2, n = 6
Output : 1 12 60 160 240 192 64
Simple Solution : We know that for each value of n there will be (n+1) term in the binomial series. So now we use a simple approach and calculate the value of each element of the series and print it .
nCr = (n!) / ((n-r)! * (r)!)
Below is value of general term.
Tr+1 = nCn-rAn-rXr
So at each position we have to find the value
of the general term and print that term .
C++
#include <bits/stdc++.h>
using namespace std;
int factorial( int n)
{
int f = 1;
for ( int i = 2; i <= n; i++)
f *= i;
return f;
}
void series( int A, int X, int n)
{
int nFact = factorial(n);
for ( int i = 0; i < n + 1; i++) {
int niFact = factorial(n - i);
int iFact = factorial(i);
int aPow = pow (A, n - i);
int xPow = pow (X, i);
cout << (nFact * aPow * xPow) /
(niFact * iFact) << " " ;
}
}
int main()
{
int A = 3, X = 4, n = 5;
series(A, X, n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static int factorial( int n)
{
int f = 1 ;
for ( int i = 2 ; i <= n; i++)
f *= i;
return f;
}
static void series( int A, int X, int n)
{
int nFact = factorial(n);
for ( int i = 0 ; i < n + 1 ; i++) {
int niFact = factorial(n - i);
int iFact = factorial(i);
int aPow = ( int )Math.pow(A, n - i);
int xPow = ( int )Math.pow(X, i);
System.out.print((nFact * aPow * xPow)
/ (niFact * iFact) + " " );
}
}
public static void main(String[] args)
{
int A = 3 , X = 4 , n = 5 ;
series(A, X, n);
}
}
|
Python3
def factorial(n):
f = 1
for i in range ( 2 , n + 1 ):
f * = i
return f
def series(A, X, n):
nFact = factorial(n)
for i in range ( 0 , n + 1 ):
niFact = factorial(n - i)
iFact = factorial(i)
aPow = pow (A, n - i)
xPow = pow (X, i)
print ( int ((nFact * aPow * xPow) /
(niFact * iFact)), end = " " )
A = 3 ; X = 4 ; n = 5
series(A, X, n)
|
C#
using System;
class GFG {
static int factorial( int n)
{
int f = 1;
for ( int i = 2; i <= n; i++)
f *= i;
return f;
}
static void series( int A, int X, int n)
{
int nFact = factorial(n);
for ( int i = 0; i < n + 1; i++) {
int niFact = factorial(n - i);
int iFact = factorial(i);
int aPow = ( int )Math.Pow(A, n - i);
int xPow = ( int )Math.Pow(X, i);
Console.Write((nFact * aPow * xPow)
/ (niFact * iFact) + " " );
}
}
public static void Main()
{
int A = 3, X = 4, n = 5;
series(A, X, n);
}
}
|
PHP
<?php
function factorial( $n )
{
$f = 1;
for ( $i = 2; $i <= $n ; $i ++)
$f *= $i ;
return $f ;
}
function series( $A , $X , $n )
{
$nFact = factorial( $n );
for ( $i = 0; $i < $n + 1; $i ++)
{
$niFact = factorial( $n - $i );
$iFact = factorial( $i );
$aPow = pow( $A , $n - $i );
$xPow = pow( $X , $i );
echo ( $nFact * $aPow * $xPow ) /
( $niFact * $iFact ) , " " ;
}
}
$A = 3;
$X = 4;
$n = 5;
series( $A , $X , $n );
?>
|
Javascript
<script>
function factorial(n)
{
let f = 1;
for (let i = 2; i <= n; i++)
f *= i;
return f;
}
function series(A, X, n)
{
let nFact = factorial(n);
for (let i = 0; i < n + 1; i++) {
let niFact = factorial(n - i);
let iFact = factorial(i);
let aPow = Math.pow(A, n - i);
let xPow = Math.pow(X, i);
document.write((nFact * aPow * xPow)
/ (niFact * iFact) + " " );
}
}
let A = 3, X = 4, n = 5;
series(A, X, n);
</script>
|
Output:
243 1620 4320 5760 3840 1024
Time complexity : O(n2)
Auxiliary Space : O(1)
Efficient Solution :
The idea is to compute next term using previous term. We can compute next term in O(1) time. We use below property of Binomial Coefficients.
nCi+1 = nCi*(n-i)/(i+1)
C++
#include <bits/stdc++.h>
using namespace std;
void series( int A, int X, int n)
{
int term = pow (A, n);
cout << term << " " ;
for ( int i = 1; i <= n; i++) {
term = term * X * (n - i + 1)/(i * A);
cout << term << " " ;
}
}
int main()
{
int A = 3, X = 4, n = 5;
series(A, X, n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static void series( int A, int X, int n)
{
int term = ( int )Math.pow(A, n);
System.out.print(term + " " );
for ( int i = 1 ; i <= n; i++) {
term = term * X * (n - i + 1 )
/ (i * A);
System.out.print(term + " " );
}
}
public static void main(String[] args)
{
int A = 3 , X = 4 , n = 5 ;
series(A, X, n);
}
}
|
Python3
def series(A, X, n):
term = pow (A, n)
print (term, end = " " )
for i in range ( 1 , n + 1 ):
term = int (term * X * (n - i + 1 ) / (i * A))
print (term, end = " " )
A = 3 ; X = 4 ; n = 5
series(A, X, n)
|
C#
using System;
public class GFG {
static void series( int A, int X, int n)
{
int term = ( int )Math.Pow(A, n);
Console.Write(term + " " );
for ( int i = 1; i <= n; i++) {
term = term * X * (n - i + 1)
/ (i * A);
Console.Write(term + " " );
}
}
public static void Main()
{
int A = 3, X = 4, n = 5;
series(A, X, n);
}
}
|
PHP
<?php
function series( $A , $X , $n )
{
$term = pow( $A , $n );
echo $term , " " ;
for ( $i = 1; $i <= $n ; $i ++)
{
$term = $term * $X * ( $n - $i + 1) /
( $i * $A );
echo $term , " " ;
}
}
$A = 3;
$X = 4;
$n = 5;
series( $A , $X , $n );
?>
|
Javascript
<script>
function series(A, X, n)
{
let term = Math.pow(A, n);
document.write(term + " " );
for (let i = 1; i <= n; i++) {
term = term * X * (n - i + 1)/(i * A);
document.write(term + " " );
}
}
let A = 3, X = 4, n = 5;
series(A, X, n);
</script>
|
Output:
243 1620 4320 5760 3840 1024
Time complexity : O(n)
Auxiliary Space : O(1)
Last Updated :
21 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...