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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

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.