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

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 equation,
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 series pair 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 series double 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 test int 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 approach import java.util.ArrayList;    class GFG {    // function to calculate the value  // of the a and r of geometric series  static 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 series  static 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 Code public 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 series def 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 series def 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 Code m, n, p = 10, 5, 15 mth, nth = 2560.0, 80.0 print(FindSum(m, n, mth, nth, p))        # This code is contributed by  # Mohit kumar 29

C#

 // C# implementation of the above approach using System; using System.Collections;    class GFG {    // function to calculate the value  // of the a and r of geometric series  static 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 series  static 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 Code static 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

PHP



Output:

81920

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.