杭电OJ1005题
2017-07-20 20:53
399 查看
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 31 2 10
0 0 0
Sample Output
25
问题分析:
根据f(n)的定义公式,f(n)的取值范围是[0,6].则组合(f(n-1),f(n-2))共有49种可能:(0,0),(0,1),……(6,6),f(n)肯定在这49种组合的49个值之内,而且在前49个值之后,f(n)的取值将照此循环,所以只要计算存储前49个值即可。提交代码
#include<iostream> using namespace std; int main() { int arr[50]; int A,B,n; arr[1]=1; arr[2]=1; while(cin>>A>>B>>n && (A|B|n)) { for(int i=3;i<50;i++) { arr[i]= (arr[i-1]*A+arr[i-2]*B)%7; } cout<<arr[n%49]<<endl; } return 0; }
相关文章推荐
- 杭电oj1005解题
- 杭电OJ(HDOJ)1005题:Number Sequence(规律递推)
- 杭电oj1005 wrong answer(待改正)
- 杭电OJ 1005 Number Sequence
- 杭电oj1005
- 杭电Oj 1004 1005 1008心得
- 杭电oj 1005
- 杭电oj1005
- 杭电OJ 1005
- 【杭电oj】1005 - Number Sequence(找规律)
- 杭电oj 1005 Number Sequence
- 杭电oj-1005
- 杭电OJ1005 水过
- 菜鸟上路 杭电OJ 1005 从 斐波那契到 快速幂
- 杭电oj 水题1005的两种解的讨论
- 杭电OJ1005-斐波拉契相关Number Sequence
- HDU-OJ 杭电1010
- 杭电OJ-----蜗牛出井
- 杭电oj2007 c++
- 杭电oj1170 c++