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

• Last Updated : 28 May, 2022

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 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[0];``    ``double` `r = (``double``)ar[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``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

 ``

## Javascript

 ``

Output:

`81920`

Time Complexity: O(log2m + log2p), where m and p represents the value of the given integers.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

My Personal Notes arrow_drop_up