菜鸟求助!!!!!!!!!!!!!
#include<stdio.h>
int main()
{
__int64 a[100001],n,i;
while(~scanf("%I64d",&n)&&n>=0)
{
a[0]=0;
for(i=1;i<=n;i++)
{
if(i%3==0)
a[i]=a[i-1]+i*i*i;
else
a[i]=a[i-1]+i;
}
printf("%I64d\n",a[n]);
}
return 0;
}
#include<stdio.h>
int main()
{
__int64 a[100001],n,i;
a[0]=0;
for(i=1;i<=100000;i++)
{
if(i%3==0)
a[i]=a[i-1]+i*i*i;
else
a[i]=a[i-1]+i;
}
while(~scanf("%I64d",&n)&&n>=0)
{
printf("%I64d\n",a[n]);
}
return 0;
}
以上这两个代码,可以解释一下,为什么第一个比第二个耗时更多一些?可以把这个知识点详细的解释一下吗?谢谢啦。。。
[解决办法]
第二个,你一次就把结果全部计算出来了,要结果就查找。第一个,是每输入一个数都去计算一篇,当然慢点。第二个就是ACM所说的打表法。