这道题来来回回做了好几遍,首先用递归写,栈溢出,接下来改算法,时间超时,后来的知道Mod7这个是有规律的,附上AC了的源代码
#include<stdio.h>
int f(int a,int b,int c)
{
int s[50];
s[0]=0;
s[1]=1;
s[2]=1;
int j,sum,time;
int i=3,s1;
if(c==1||c==2)
{
return 1;
}
else
{
for(i=3;i<50;i++)
{
s1=(a*s[i-1]+b*s[i-2])%7;
s[i]=s1;
if(s1==s[2]&&s[i-1]==s[1])
break;
}
time=i-2;
j=c%time;
if (j==0)
{
sum=s[time];
}
else
{
sum=s[j];
}
return sum;
}
}
int main()
{
int A,B,n,sum;
while(scanf("%d %d %d",&A,&B,&n)!=EOF)
{
if(A==0&&B==0&&n==0)
{
break;
}
sum=f(A,B,n);
printf("%d\n",sum);
}
return 0;
}