题目描述:
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).
大致思路:
如果硬算的话一是会爆时间,二还是会暴空间的。所以事先打了个表,发现在49以后出现了循环节。
代码:
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).
大致思路:
如果硬算的话一是会爆时间,二还是会暴空间的。所以事先打了个表,发现在49以后出现了循环节。
代码:
#include<stdio.h>
int main(){
long a,b,n,i,f[100];
while(scanf("%ld%ld%ld",&a,&b,&n) && a!=0){
f[1]=f[2]=1;
for(i=3;i<=48;i++)
f[i]=(a*f[i-1]+b*f[i-2])%7;
printf("%ld\n",f[(n>48)?n%48:n]);
}
return 0;
}