【转】http://blog.csdn.net/zxy_snow/article/details/5938336
因为公式是f(n) = (A * f(n – 1) + B * f(n – 2)) mod 7,所以f(n)=(A%7*f(n-1)+B%7*f(n-2))%7,A%7与B%7的值的范围只有0~6,也就是说循环体最大是49。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int num[50];
void compute(int a,int b,int n)
{
int i,m;
for(i=3; i<=49; i++)
{
num[i] = (a*num[i-1] + b*num[i-2]) % 7;
if( num[i] == 1 && num[i-1] == 1 )
break;
}
m = i-2;
cout << num[(n-1)%m+1] << endl;
}
int main(void)
{
int a,b,n;
num[1] = 1;
num[2] = 1;
while( cin >> a >> b >> n )
{
if( !(a||b||n) )
break;
compute(a,b,n);
}
return 0;
}