首先,显而易见,我们会先到递归,但是a过才知道不行。仔细看要求n的最大值已经有九位数,因此递归太大,行不通。于是有这个找规律的算法。题目对7取余数,不管数有多大,取余数只有7种情况,于是最多有49种情况
#include<iostream>
using namespace std;
int main()
{
int a,b,n;
int f[50];
while(cin>>a>>b>>n)
{
if(a==0&&b==0&&n==0) break;
if(n==1||n==2)
{
cout<<"1"<<endl;
continue;
}
for(int j=1;j<3;j++)
{
f[j]=1;
}
for(int i=3;i<=n%49;i++)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
}
cout<<f[n%49]<<endl;
}
return 0;
}