首页 > 代码库 > 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).
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。