Related Articles
Find Pth term of a GP if Mth and Nth terms are given
• Last Updated : 01 Apr, 2019

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<``double``, ``double``> 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<``double``, ``double``> 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
```
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.
My Personal Notes arrow_drop_up