//res[i]=res[i-1]+res[i-2];
//res[i-1],res[i-2]的可能只有7种情况,0123456,所以res[i]最多49种情况
#include<stdio.h>
int A,B;
int res[60];
int main(){
int n,i;
while(scanf("%d%d%d",&A,&B,&n),A!=0&&B!=0&&n!=0){
res[0]=res[1]=res[2]=1;
int b,e,flag,j;flag=0;
for(i=3;i<=n&&!flag;i++){
res[i]=(A*res[i-1]+B*res[i-2])%7;
//寻找循环的begin,end
for(j=2;j<i;j++){
if(res[i]==res[j]&&res[i-1]==res[j-1]){
b=j;e=i;
flag=1;
break;
}
}
}
if(flag)
printf("%d\n",res[b+(n-e)%(e-b)]);
else
printf("%d\n",res[n]);
}
return 0;
}
hdu 1005
最新推荐文章于 2020-07-12 20:18:12 发布