已知等比数列的第 M 项和第 N 项,求第 P 项 (C++ 实现)
本题给定五个值 m、n、第 m 项、第 n 项和 p。我们的任务是:已知等比数列的第 M 项和第 N 项,求第 P 项。
对于一个等比数列,我们已知第 m 项和第 n 项的值。利用这些值,我们需要找到数列的第 p 项。
让我们来看一个例子来理解这个问题:
输入
m = 7, mthTerm = 1458, n = 10, nthterm = 39366, p = 3
输出
18
解决方案
这里,我们给定一个等比数列。假设等比数列为:
GP = a , a*r , a*(r2), a*(r3) ….
第 T 项的公式为
Tth Term = a * r(T-1)
现在,我们已知第 n 项和第 m 项:
mth term = a * (r ^ (m-1)) nth term = a * (r ^ (n-1))
将两个等式相除,我们得到:
mth term / nth term = (r ^(m - n))
使用这个等式,我们可以找到 r 的值,然后可以使用第 m 项的值来找到 a:
mth term = a * (r^(m-1))
然后在找到 a 和 r 的值后,可以使用以下公式轻松找到第 p 项的值:
pth term = a * (r^(p-1))
程序演示了我们解决方案的工作原理:
示例
#include <cmath>
#include <iostream>
using namespace std;
double findRinGP(double m, double n, double mth, double nth) {
if (m < n)
return pow(nth / mth, 1.0 / (n - m));
return pow(mth / nth, 1.0 / (m - n));
}
double findTermGP(int m, int n, double mth, double nth, int p) {
double r = findRinGP(m, n, mth, nth);
double a = mth / pow(r, (m - 1));
return ( a * pow(r, (p - 1)) );
}
int main() {
int m = 7, n = 10, p = 5;
double mth = 1458, nth = 39366;
cout<<"The "<<p<<"th of the series is "<<findTermGP(m, n, mth, nth, p);
return 0;
}输出
The 5th of the series is 162
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP