此题思路参考了别人的:f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 假设 A * f(n - 1)= x , B * f(n - 2)=y,f(n)= z
z= (x+y)%7, x %7=7种可能 y %7=7种 所以z一共49种可能,此题呜呜依旧 WA 难受.......感觉每天在写错误代码一样的难受...
# include <iostream>
using namespace std;
# define N 49
int a[N] = {1,1};
int main(void) {
int A, B, n;
cin >> A >> B >> n;
int i = 0;
while (A || B || n) {
if (n > 0 && n < 3)
cout << a[n - 1] << endl;
for (i = 2; i < 49; ++i){
a[i] = (A * a[i - 1] + B * a[i - 2])%7;
if (i == n-1)
break;
}//计算周期49次前的
if (i == n-1) {
cout << a[i] << endl;
}
else {
cout << a[(n % 49) - 1] << endl;
}
cin >> A >> B >> n;
}
system("pause");
return 0;
}