📌  相关文章
📜  如果给出了第Mth和Nth项,则查找GP的Pth项

📅  最后修改于: 2021-04-24 16:13:40             🧑  作者: Mango

给定几何级数的Mth和Nth项。查找其Pth项。

例子:

方法:

设a为第一项,r为给定几何级数的公比。所以

mth term = a * pow ( r, (m-1) ) ....... (i) and
nth term = a * pow ( r, (n-1) ) ....... (ii)

为了方便起见,假设m> n
从这两个方程,
由于我们给定了值m,n,第m个项和第n个项,因此

r = pow(A/B, 1.0/(m-n))


现在,将r的值放在上述两个方程式中的任何一个中,然后计算a的值。

找到a和r的值后,请使用GP的Pth项的公式。

下面是上述方法的实现:

C++
#include 
#include 
#include 
using namespace std;
  
// function to calculate the value
// of the a and r of geometric series
pair 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 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


输出:
81920
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”