Number Sequence
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).
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).
Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
Output
For each test case, print the value of f(n) on a single line.
Sample Input
1 1 3
1 2 10
0 0 0
Sample Output
2
5
分析:
计算可以发现这个函数是有规律可找的,是以49为一个周期的循环;
所以我们只需要将49个数打表出来,输出所求数除以49的余数所对应的值就可以了。
1 #include<iostream> 2 using namespace std; 3 const int maxn=100000000; 4 int A,B,n,m,f[maxn]; 5 6 int main() 7 {int i; 8 f[1]=1;f[2]=1; 9 cin>>A>>B>>n; 10 while(A!=0||B!=0||n!=0) 11 { 12 for(i=3;i<=49;i++) 13 f[i]=(A*f[i-1]+B*f[i-2])%7; 14 m=n%49; 15 cout<<f[m]<<endl; 16 cin>>A>>B>>n; 17 } 18 return 0; 19 }
说明:由于数据较大如果用递归的方法和会超时。