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

**Examples:**

Input:m = 10, n = 5, mth = 2560, nth = 80, p = 30Output:pth = 81920

Input:m = 8, n = 2, mth = 1250, nth = 960, p = 15Output: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 <cmath>` `#include <iostream>` `#include <vector>` `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

`<?php` `// Php implementation of the above approach` `function` `swap(` `$a1` `, ` `$a2` `)` `{` ` ` `$temp` `= ` `$a1` `;` ` ` `$a1` `= ` `$a2` `;` ` ` `$a2` `= ` `$temp` `;` `}` ` ` `// function to calculate the value ` `// of the a and r of geometric series ` `function` `values_of_r_and_a(` `$m` `, ` `$n` `, ` `$mth` `, ` `$nth` `) ` `{ ` ` ` `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` `array` `(` `$a` `, ` `$r` `); ` `} ` ` ` `// function to calculate the value ` `// of pth term of the series ` `function` `FindSum(` `$m` `, ` `$n` `, ` `$mth` `, ` `$nth` `, ` `$p` `) ` `{ ` ` ` ` ` `// first calculate value of a and r ` ` ` `$ar` `= values_of_r_and_a(` `$m` `, ` `$n` `, ` `$mth` `, ` `$nth` `); ` ` ` ` ` `$a` `= ` `$ar` `[0]; ` ` ` `$r` `= ` `$ar` `[1]; ` ` ` ` ` `// calculate pth term by using formula ` ` ` `$pth` `= ` `$a` `* pow(` `$r` `, (` `$p` `- 1.0)); ` ` ` ` ` `// return the value of pth term ` ` ` `return` `$pth` `; ` `} ` ` ` `// Driver Code` `$m` `= 10;` `$n` `= 5;` `$p` `= 15; ` ` ` `$mth` `= 2560;` `$nth` `= 80;` ` ` `echo` `FindSum(` `$m` `, ` `$n` `, ` `$mth` `, ` `$nth` `, ` `$p` `);` ` ` `// This code is contributed by Ryuga` `?>` |

**Output:**

81920

**C++ Foundation Course**for Basic to Advanced C++ and

**C++ STL Course**for foundation plus STL.