杭电1005求帮助,路过的都看看啊!
#include <stdio.h>
#include <stdlib.h>
/*************************************
Problem 1005
A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).
*************************************/
int func(int a,int b,int f_n_1,int f_n_2)
{
/* Parameter:a=A,b=B,f_n_1=f(n - 1) ,f_n_2=f(n - 2)*/
return (a*f_n_1+b*f_n_2)%7;
}
int main()
{
int i,j,a,b,temp;
int n;
int mod[51]= {1,1};
while(scanf("%d%d%d", &a, &b, &n) != EOF && (a || b || n))
{
for(j=0; j<47; j++)
{
mod[j+2]=func(a,b,mod[j+1],mod[j]);
}
for(i=1; i<49; i++)
{
if(mod[i]==mod[0]&&mod[i+1]==mod[1])
{
temp=i;
break;
}
}
printf("%d\n",mod[(n-1)%temp]);
}
return 0;
}