Number Sequence

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). 
 

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 }

 

说明:由于数据较大如果用递归的方法和会超时。
 
posted @ 2015-07-18 09:14  枫虹  阅读(122)  评论(0编辑  收藏  举报