一道ACM题
时间:2010-12-05 来源:microsoftmvp
#include<cstdio>
int main(void)
{
int x = 987654321, c = 0, d = 1, e = 6;
while(x--)
{
c += d,
d += e,
e += 6;
}
printf("%d\n", c);
return 0;
}
大牛写出了代码,然后让你说说,这个代码计算什么家伙?
循环的次数直接和x的值有关,所以,首先考虑较小的x,看看程序输出什么:x=1时,c=1;x=2时,c=8;x=3时,c=27,地球人都知道,这是在计算x的立方。这是由特殊到一般的思想。
下面试图严格证明。
没必要使用什么数学归纳法,你应该多用演绎法,这样才能更加锻炼和提高自己的逻辑推理能力。
记c=f(n).d=g(n),e=h(n).那么由循环得递推关系:f(n)=f(n-1)+g(n-1) g(n)=g(n-1)+h(n-1) h(n)=h(n-1)+6 ,初值关系当然很明显。解这个递推式非常容易,高一的水平就可以了。
相关阅读 更多 +