首页 > 其他 > 详细

HDU-1005(规律题)

时间:2014-02-15 01:40:53      阅读:397      评论:0      收藏:0      [点我收藏+]

Number Sequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 92129    Accepted Submission(s): 21967


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

 

bubuko.com,布布扣
#include<iostream>
#include<string>
using namespace std;
int a[21];
int A=1, B=1, n;
int f(int x)
{
    if (x == 1 || x == 2)return 1;
    if (a[x])return a[x];
    else return a[x] = (A*f(x - 1) + B*f(x - 2)) % 7;
}
int main()
{
    while (1){
        cin >> A >> B >> n;
        if (A == 0 && B == 0 && n == 0)break;
        memset(a, 0, sizeof(a));
        f(20);
        a[0] = a[16];
        a[1] = a[17];
        a[2] = a[18];
        if (n == 1 || n == 2){
            cout << "1\n";
        }
        else{
            cout << a[n % 16] << endl;
        }
    }

    system("pause");
    return 0;
}
bubuko.com,布布扣

规律题,只要把前几十个打出来看一下就知道了。水题~

HDU-1005(规律题)

原文:http://www.cnblogs.com/littlehoom/p/3549276.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!