注意一点细节,其他的并不是特别难,就是需要分析好所有的情况,然后对拍对拍再对拍即可
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int g[10][10],a,b,n;
int main()
{
while (scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if (a==0&&b==0&&n==0) break;
int f[55],len=0;
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
g[1][1]=2;
f[1]=f[2]=1;
for (int i=3;i<=min(n,50);i++)
{
f[i]=(f[i-1]*a+f[i-2]*b)%7;
if (i==n) break;
if (g[f[i-1]][f[i]])
{
int l1=f[i-1],l2=f[i];
len=i-g[l1][l2];
n=(n-g[l1][l2]+1)%len;
printf("%d\n",f[g[l1][l2]+n-1]);
break;
}else g[f[i-1]][f[i]]=i;
}
if (len==0)printf("%d\n",f[n]);
}
return 0;
}