zoukankan      html  css  js  c++  java
  • HDU-1005 Number Sequence

    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


    (a+b) mod c == (a mod c + b mod c) mod c

    抽屉原理。

    令[f(n-1), f(n-2)] 为一组,所以一共有 7*7 种不同的组合情况,到第 50 个时,一定会开始出现重复的组合,因为斐波那契数列 f(n) = f(n-1)+f(n-2),所以开始循环重复,所以 7*7 为最大周期。

    #include <iostream>
    using namespace std;
    
    int main(void)
    {
        int a, b, n;
        int s[50];
        
        while(cin >> a >> b >> n && (a || b || n))
        {
            s[0] = 1; s[1] = 1;
            for(int i = 2; i < 49; i++)
            {
                s[i] = (a*s[i-1]+b*s[i-2]) % 7;
            }
            cout << s[n%49-1] << endl;
        }
        
        return 0;
    }
    
  • 相关阅读:
    python-多任务-进程
    注解_Annotation
    ZIP压缩输入/输出流
    什么是API,这篇文章让你豁然开朗
    异常处理(在控制台输入数据)
    控件监听与面板监听
    多态与继承
    Java——socketser与cli
    20170307
    20180305
  • 原文地址:https://www.cnblogs.com/limyel/p/6671347.html
Copyright © 2011-2022 走看看