• 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;
    }
    
  • 相关阅读:
    ASP.Net控件基础篇
    ASP.Net
    有关于静态
    重载
    继承和多态
    面向对象的封装
    .net webform 把word转为html
    lambda 表达式 比较时间大小
    js 根据名字获取cookie 的方法
    .net 常用的命名空间和类
  • 原文地址:https://www.cnblogs.com/limyel/p/6671347.html
Copyright © 2020-2023  润新知