首页 > 代码库 > Number Sequence

Number Sequence

Problem Description
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
 
 1 #include <stdio.h>   //N要满足条件的足够大,至于为什么是201要慢慢增大N的数值进行尝试 2 #define N 201 3  4 int main(){ 5     int A; 6     int B; 7     long n; 8     int i; 9     int f[N];10     int flag;11 12     f[1]=1;13     f[2]=1;14 15     while(1){16         scanf("%d%d%ld",&A,&B,&n);17 18         if(A==0 && B==0 && n==0)19             break;20 21         flag=0;22         for(i=3;i<N;i++){   //两种情况,一种是以1 1开头进行循环的数列,另一种是1 1 0 0 0...23             f[i]=(f[i-1]*A+f[i-2]*B)%7;24             25             if(f[i]==1 && f[i-1]==1)26                 break;27 28             if(f[i]==0 && f[i-1]==0){29                 flag=1;30                 break;31             }32         }33 34         if(flag==1){35             if(n==1 || n==2)36                 printf("1\n");37 38             else39                 printf("0\n");40             continue;41         }42 43         i-=2;   //i为周期44         n%=i;   //n为周期内的某个数45         46         if(n==0)  //f[0]=f[i]47             n=i;48 49         50         printf("%d\n",f[n]);51     }52 53     return 0;54 }

 

 

Number Sequence