Find Pth term of a GP if Mth and Nth terms are given

• Last Updated : 01 Jun, 2021

Given Mth and Nth term of a Geometric progression. Find its Pth term.
Examples:

Input: m = 10, n = 5, mth = 2560, nth = 80, p = 30
Output: pth = 81920
Input: m = 8, n = 2, mth = 1250, nth = 960, p = 15
Output: 24964.4

Approach:
Let a is the first term and r is the common ratio of the given Geometric Progression. Therefore

mth term = a * pow ( r, (m-1) ) ....... (i) and
nth term = a * pow ( r, (n-1) ) ....... (ii)

For convenience, it is assumed that m > n
From these 2 equations,
Since we have given values m, n, mth term, and nth term, therefore

r = pow(A/B, 1.0/(m-n))

and
Now put the value of r in any of above two-equation and calculate the value of a.

a = mth term / pow ( r, (m-1) ) or
a = nth term / pow ( r, (n-1) )

After finding the value of a and r, use the formula of Pth terms of a GP.

pth term of GP = a * pow ( r, (p-1.0) );

Below is the implementation of the above approach:

C++

 #include #include #include using namespace std; // function to calculate the value// of the a and r of geometric seriespair values_of_r_and_a(double m,                                       double n,                                       double mth,                                       double nth){    double a, r;     if (m < n) {        swap(m, n);        swap(mth, nth);    }     // calculate value of r using formula    r = pow(mth / nth, 1.0 / (m - n));     // calculate value of a using value of r    a = mth / pow(r, (m - 1));     // push both values in the vector and return it    return make_pair(a, r);} // function to calculate the value// of pth term of the seriesdouble FindSum(int m, int n, double mth,               double nth, int p){    pair ar;     // first calculate value of a and r    ar = values_of_r_and_a(m, n, mth, nth);     double a = ar.first;    double r = ar.second;     // calculate pth term by using formula    double pth = a * pow(r, (p - 1.0));     // return the value of pth term    return pth;} // Driven program to testint main(){    int m = 10, n = 5, p = 15;    double mth = 2560, nth = 80;    cout << FindSum(m, n, mth, nth, p)         << endl;     return 0;}

Java

 // Java implementation of the above approachimport java.util.ArrayList; class GFG{ // function to calculate the value// of the a and r of geometric seriesstatic ArrayList values_of_r_and_a(double m, double n,                                double mth, double nth){    if (m < n)    {        double t = m;        n = m;        m = t;        t = mth;        mth = nth;        nth = t;    }     // calculate value of r using formula    double r = Math.pow(mth / nth, 1.0 / (m - n));     // calculate value of a using value of r    double a = mth / Math.pow(r, (m - 1));     // push both values in the vector    // and return it    ArrayList arr = new ArrayList();    arr.add(a);    arr.add(r);    return arr;} // function to calculate the value// of pth term of the seriesstatic double FindSum(double m, double n,                    double mth, double nth,                    double p){     // first calculate value of a and r    ArrayList ar = values_of_r_and_a(m, n, mth, nth);     double a = (double)ar.get(0);    double r = (double)ar.get(1);     // calculate pth term by using formula    double pth = a * Math.pow(r, (p - 1.0));     // return the value of pth term    return pth;} // Driver Codepublic static void main(String[] args){    double m = 10;    double n = 5;    double p = 15;    double mth = 2560;    double nth = 80;     System.out.println((int)FindSum(m, n, mth, nth, p));}} // This code has been contributed by 29AjayKumar

Python3

 # Python3 program for above approach # function to calculate the value# of the a and r of geometric seriesdef values_of_r_and_a(m, n, mth, nth):     a, r = 0.0, 0.0     if (m < n):        m, n = n, m        mth, nth = mth, nth     # calculate value of r using formula    r = pow(mth // nth, 1.0 /(m - n))     # calculate value of a using value of r    a = mth // pow(r, (m - 1))     # push both values in the vector    # and return it    return a, r # function to calculate the value# of pth term of the seriesdef FindSum(m, n, mth, nth, p):      # first calculate value of a and r    a,r = values_of_r_and_a(m, n, mth, nth)     # calculate pth term by using formula    pth = a * pow(r, (p - 1.0))     # return the value of pth term    return pth # Driven Codem, n, p = 10, 5, 15mth, nth = 2560.0, 80.0print(FindSum(m, n, mth, nth, p))     # This code is contributed by# Mohit kumar 29

C#

 // C# implementation of the above approachusing System;using System.Collections; class GFG{ // function to calculate the value// of the a and r of geometric seriesstatic ArrayList values_of_r_and_a(double m, double n,                                double mth, double nth){    if (m < n)    {        double t = m;        n = m;        m = t;        t = mth;        mth = nth;        nth = t;    }     // calculate value of r using formula    double r = Math.Pow(mth / nth, 1.0 / (m - n));     // calculate value of a using value of r    double a = mth / Math.Pow(r, (m - 1));     // push both values in the vector    // and return it    ArrayList arr = new ArrayList();    arr.Add(a);    arr.Add(r);    return arr;} // function to calculate the value// of pth term of the seriesstatic double FindSum(double m, double n,                    double mth, double nth,                    double p){     // first calculate value of a and r    ArrayList ar = values_of_r_and_a(m, n, mth, nth);     double a = (double)ar;    double r = (double)ar;     // calculate pth term by using formula    double pth = a * Math.Pow(r, (p - 1.0));     // return the value of pth term    return pth;} // Driver Codestatic void Main(){    double m = 10;    double n = 5;    double p = 15;    double mth = 2560;    double nth = 80;     Console.WriteLine(FindSum(m, n, mth, nth, p));}} // This code is contributed by mits



Javascript


Output:
81920

My Personal Notes arrow_drop_up