杭电oj-1005(Number Sequence)

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

Author

CHEN, Shunbao

由分析可知,结果只有7*7=49种情况,并且是循环往复的,所以采用以下算法~

代码:


import java.util.Scanner;

public class Main1005 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a, b, n;
        while (in.hasNext()) {
            a = in.nextInt();
            b = in.nextInt();
            n = in.nextInt();
            if (a == 0 & b == 0 & n == 0)
                System.exit(0);
            int f[] = new int[50];
            for (int i = 1; i < 50; i++) {
                if (i == 1 || i == 2) {
                    f[i] = 1;
                } else {
                    f[i] = (a * f[i - 1] + b * f[i - 2]) % 7;
                }
            }
            System.out.println(f[n % 49]);
        }
    }
}

你可能感兴趣的:(杭电oj-1005(Number Sequence))