给定几何级数的Mth和Nth项。查找其Pth项。
例子:
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
方法:
设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 = mth term / pow ( r, (m-1) ) or
a = nth term / pow ( r, (n-1) )
找到a和r的值后,请使用GP的Pth项的公式。
pth term of GP = a * pow ( r, (p-1.0) );
下面是上述方法的实现:
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等的更多准备工作,请参阅“完整面试准备课程” 。