用递归的话内存会不够。该题涉及mod 所以每个函数取值只固定在几个值分别是0,1,2,3,4,5,6.而A B 值是固定的,所以当f(n-1)取0的时候,f(n-2)可以取七个值,f(n-1)取1的时候,f(n-2)可以取七个值.。。。而且f(n-1)也有七个取值,所以j一共有49中种可能的取值对。这就缩小了循环的范围
#include<iostream>
using namespace std;
int main(){
int A,B,n;
int f[60];
while(cin>>A>>B>>n){
if(A==0&&B==0&&n==0)
break;
f[1]=1;
f[2]=1;
for(int i=3;i<=49;i++){
f[i]=(A*f[i-1]+f[i-2]*B)%7;
}
cout<<f[n%49]<<endl;
}
return 0;
}