开始用递归总是超时,后来发现每 7 一循环,不过要根据 f [3] 把0, 1, 2, 3, 4, 5, 6的次序改了,但这样我写不出来,后来百度说49一循环,解决了。
#include <iostream>
using namespace std;
int main()
{
int a,b;
long int n;
int i;
int f[50];
while(cin>>a>>b>>n && n!=0)
{
f[1]=1;
f[2]=1;
for(i =3;i<=48;i++)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
}
n =n % 49;
f[0] = f[48];
cout<<f[n] <<endl;
}
return 0;
}