几何级数第n项程序中测试用例失败

问题描述 投票:0回答:2

前两项 A 和 B 是几何级数,代码应该找到 GP 的第 n 项。它在少数测试用例中执行,但在 A=84 的测试用例中失败; B=87; N=3。谁能告诉我为什么会发生这种情况,即使这种情况进一步发生,如何解决这个问题?

double termOfGP(int A,int B,int N)
{
int r;
r=(int)B/A;
return A * (int)(pow(r,N-1));
}
c++ c++14
2个回答
0
投票

想一想

r
的价值是多少。在您的情况下,您使用
int
来存储
r
的值,这将导致实际结果向下舍入。

对于失败的测试,87/84 = 1.0357。但是您的

r
值将向下舍入为 1。对于通过的测试用例,您可能很幸运,因为该比率没有任何分数。

您应该使用 double 来存储 r 的值。或者您可以将方程修改为:

return A * (int)((double)(pow(B,N-1))/(double)(pow(A,N-1)));

0
投票

//你是对的,只需要处理极端情况下的浮点 double termOfGP(int A,int B,int N) { 双 nthTerm = (A * (双) ( (双) pow(B, N-1) / (双) pow(A, N-1) ) );

 return nthTerm;
}
© www.soinside.com 2019 - 2024. All rights reserved.