hdu1005(水题)

根据公式求结果的一道题。范围100,000,000,果断暴力不行,找规律才能做出来。

#include
#include
#include
#include
#include
#include
using namespace std;
int f[10010];
int main(){
    int a, b, n;
    f[1] = 1;
    f[2] = 1;
    while(cin>>a>>b>>n, a!=0 || b!=0 || n!=0){
        int i;
        for(i=3; i<10000; i++){
            f[i] = (a * f[i-1] + b * f[i-2]) % 7;
            if(f[i] == 1 && f[i-1] == 1)//结果重复
                break;
        }
        n = n % (i-2);
        f[0] = f[i-2];//如果整出的情况
        printf("%d\n",f[n]);
    }
    return 0;
}

你可能感兴趣的:(hdu1005(水题))