
文章目录
杭电acm题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003

解答
以下为在杭电hdu acm上已AC的C语言、C++实现的两种方法
C语言实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
int f[10000]; int (){ int A,B,n; f[1]=f[2]=1; while(scanf("%d%d%d",&A,&B,&n),A||B||n){ int i; for(i=3;i<10000;i++){ f[i]=(A*f[i-1]+B*f[i-2])%7; if(f[i]==1&&f[i-1]==1) break; } n=n%(i-2); f[0]=f[i-2]; printf("%dn",f[n]); } return 0; }
|
C++实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include <iostream> using namespace std; int arr[10000]; int () { int A,B,n; arr[1] = arr[2] = 1; while(cin>>A>>B>>n, A || B || n) { int i; for(i=3; i<10000 ;i++) { arr[i] = (A*arr[i-1] + B*arr[i-2]) % 7; if(arr[i] == 1 && arr[i-1] == 1) break; } n = n % (i-2); arr[0] = arr[i-2]; cout << arr[n] << endl; } return 0; }
|
近期评论