/***********************
*Date:2016/05/17-by
*Exp:求余问题一般有规律
************************/
#include <iostream>
#define N 50//由于两个数对7求余,所以可能出现的最大循环次数为7*7
using namespace std;
int arr[N];
int main(){
int A,B,n;
arr[1] = arr[2] = 1;
while(cin>>A>>B>>n, A || B || n){
int i;
for(i=3; i<N ;i++){
arr[i] = (A * arr[i - 1] + B * arr[i - 2]) % 7;
//如果有两个连着 =1,则后面的全部和前面相同,即出现了周期i-2
if(arr[i] == 1 && arr[i-1] == 1)
break;
}
arr[0] = arr[i-2];
cout << arr[n%(i-2)] << endl;
}
return 0;
}
HDU 1005 NumberSequence
最新推荐文章于 2018-06-12 21:50:38 发布