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 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 <cmath>#include <iostream>#include <vector>using namespace std;// function to calculate the value// of the a and r of geometric seriespair<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 seriesdouble 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 testint 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 approachimport 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 Codepublic 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 seriesdef 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 seriesdef 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 Codem, n, p = 10, 5, 15mth, nth = 2560.0, 80.0print(FindSum(m, n, mth, nth, p)) # This code is contributed by # Mohit kumar 29 |
C#
// C# implementation of the above approachusing 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 Codestatic 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 approachfunction 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?> |
Javascript
<script> // Javascript implementation of the above approach // 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) { let t = m; n = m; m = t; t = mth; mth = nth; nth = t; } // calculate value of r using formula let r = Math.pow(mth / nth, 1.0 / (m - n)); // calculate value of a using value of r let a = mth / Math.pow(r, (m - 1)); // push both values in the vector // and return it let arr = []; arr.push(a); arr.push(r); return arr; } // 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 let ar = values_of_r_and_a(m, n, mth, nth); let a = ar[0]; let r = ar[1]; // calculate pth term by using formula let pth = a * Math.pow(r, (p - 1.0)); // return the value of pth term return pth; } let m = 10; let n = 5; let p = 15; let mth = 2560; let nth = 80; document.write(FindSum(m, n, mth, nth, p)); </script> |
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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



