#include <stdio.h>
#define MOD 100003
int f[1001];
int main()
{
int n,i;
while(scanf("%d",&n) && n!=0)
{
if(n%2==1) f[n]=0;
f[2]=3;
f[4]=11;
if(n>5 && n%2==0)
{
for(i=6; i<=n; i+=2)
{
f[i]=4*f[i-2]%MOD - f[i-4]%MOD;
if(f[i]<0) f[i]+=MOD;
}
}
printf("%d\n",f[n]);
}
return 0;
}
这道题改了非常久,一直没有找到错误在哪里,最后对照着邹的打一模一样的代码才发现在写if(f[i]<0) f[i]+=MOD;时i均错写成了n,这个错误在写上一题color运用递归时也犯了,应该说出错的原因很显然是因为解题的思路不是自己想出来的,只是大致懂递归的思想,而i是在层层迭代过程中非常重要的部分。具体的骨牌思想再补充。
骨牌
最新推荐文章于 2021-09-15 18:34:59 发布