目的是计算 12+22+...+nx<=1000时 n的最大值,但是这样算法下去,会比正确值多2,请问是哪里出问题了呢?
#include
using namespace std;
int main()
{
int n,b,c=0;
for(n=1;c<=1000;n++)
{
b=n*10+2;
c+=b;
}
cout<<n<<endl;
system("pause");
return 0;
}
for(n=1;c<=1000;n++)
{
b=n*10+2;
c+=b;
}
->
n=1;
while (1)
{
b=n*10+2;
if (c+b<=1000)
c+=b;
else break;
n++;
}
多2?应该是多1吧。。。在退出循环的时候 n++了一次,变15了。c是1078
当临近的时候,比方说,n=13时,算出c,,然后会执行 n++ ,此时n = 14,这时候 c < 1000,程序会继续执行,然后n++ ,这时n = 15,c>1000,所以最后输出的会是多两个