zoukankan      html  css  js  c++  java
  • sicily 1001. Fibonacci 2

                                  1001. Fibonacci 2
     
    Description
    In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn-1 + Fn-2 for n ≥ 2. For example, the first ten terms of the Fibonacci sequence are:
     
    0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
     
    Given an integer n, your goal is to compute the last Fn mod (10^9 + 7).
    Input

     The input test file will contain a single line containing n (n ≤ 2^31-1).

    There are multiple test cases!

    Output

     For each test case, print the Fn mod (10^9 + 7).

    Sample Input
     Copy sample input to clipboard 
    9
    Sample Output
    34

    用矩阵快速幂的方法,具体可见: http://blog.csdn.net/ACdreamers/article/details/25616461

    #include <iostream>
    
    using namespace std;
    
    #define M 1000000007
    
    struct Matrix{
        long long v[2][2];
    };
    
    Matrix matrixMul(Matrix a, Matrix b) {
        Matrix temp;
        for (int i = 0; i != 2; i++) {
            for (int j = 0; j != 2; j++) {
                temp.v[i][j] = 0;
                for (int k = 0; k != 2; k++) {
                    temp.v[i][j] += a.v[i][k] * b.v[k][j];
                    temp.v[i][j] %= M;
                }
            }
        }
        return temp;
    }
    
    Matrix power(Matrix a, Matrix b, long long n) {
        while (n) {
            if (n & 1) {
                b = matrixMul(b, a);
            }
            n >>= 1;
            a = matrixMul(a, a);
        }
        return b;
    }
    
    int main(int argc, char* argv[]) 
    {
        Matrix a = {1, 1, 1, 0}, b = {1, 0, 0, 1};
        long long n;
        while (cin >> n) {
            if (n == 0)
                cout << 0 << endl;
            else {
                Matrix result = power(a, b, n - 1);
                cout << result.v[0][0] << endl;
            }
        }
    
        return 0;
    }
  • 相关阅读:
    Array的个人总结
    sublime3 的安装
    小白 安装和配置Tomcat 局域网内访问网页
    安装Axure7.0,完整教程,有验证码和汉化包
    安装 sublime2 (包括插件)
    ffmpeg
    ExecutorService
    artDialog
    交互
    刚查了,Z3795不支持EPT,即WP8开发必须的SLAT,看来只能作为简单的WINDOWS备机了
  • 原文地址:https://www.cnblogs.com/xiezhw3/p/3997190.html
Copyright © 2011-2022 走看看