zoukankan      html  css  js  c++  java
  • 51nod1126 求递推序列的第N项【递推】

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

    给出A,B和N,求f(n)的值。

    Input

    输入3个数:A,B,N。数字之间用空格分割。(-10000 <= A, B <= 10000, 1 <= N <= 10^9)

    Output

    输出f(n)的值。

    Input示例

    3 -1 5

    Output示例

    6
    #include<bits/stdc++.h>
     #define N 1000009
    using namespace std;
    typedef long long LL;
    int f[N]; int main()
    {
        int i, j, a, b, n, ff = 0;
        f[1] = f[2] = 1;
        scanf("%d%d%d", &a, &b, &n);
        for(i = 3; i <= n; i++)
        {
            f[i] = (((a*f[i-1] + b*f[i-2]) % 7) + 7) % 7;
            for(j = 2; j < i; j++)
            {
                if(f[i] == f[j] && f[i - 1] == f[j - 1])
                {
                    ff = 1; break;
                }
            }
            if(ff) break;
        }
        if(ff)
            printf("%d
    ", f[j + (n - i) % (i - j)]);
        else
        printf("%d
    ", f[n]);
        return 0;
     }
    
  • 相关阅读:
    java的反射机制浅谈 分类: java
    2.4.3 Cow Tours
    2.4.2 Overfencing
    2.4.1 The Tamworth Two
    Shortest Paths
    2.3.5 Controlling Companies
    2.3.4 Money Systems
    2.3.3 Zero Sum
    2.3.2 Cow Pedigrees
    2.3.1 Longest Prefix
  • 原文地址:https://www.cnblogs.com/aerer/p/9930925.html
Copyright © 2011-2022 走看看