有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
给出A,B和N,求f(n)的值。
3 -1 5
6
#include<cstdio>
long long f[50];
int main()
{
long long a,b,n;
while(~scanf("%lld%lld%lld",&a,&b,&n))
{
f[1]=f[2]=1;
long long i;
for(i=3; i<50; i++)
{
f[i]=((a*f[i-1]+b*f[i-2])%7+7)%7;
if(f[i]==1&&f[i-1]==1)//如果f[i]和前面的f[i-1]相等并且等于1了,说明到了一个周期
break;
}
i-=2;//i就是周期长度
f[0]=f[i];//巧妙
printf("%lld\n",f[n%i]);
}
return 0;
}