zoukankan      html  css  js  c++  java
  • 51Nod

    斐波那契数列的定义如下:
     
    F(0) = 0
    F(1) = 1
    F(n) = F(n - 1) + F(n - 2) (n >= 2)
     
    (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...)
    给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。
     

    Input输入1个数n(1 <= n <= 10^18)。Output输出F(n) % 1000000009的结果。Sample Input

    11

    Sample Output

    89



    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    #define ll long long
    using namespace std;
    const ll mod = 1000000009;
    struct mat
    {
        ll m[2][2];
        mat()
        {
            memset(m, 0, sizeof(m));
        }
    };
    mat mul(mat &A, mat &B)
    {
        mat C;
        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                for (int k = 0; k < 2; k++) 
                {
                    C.m[i][j] = (C.m[i][j] + A.m[i][k] * B.m[k][j]) % mod;
                }
            }
        }
        return C;
    }
    mat pow(mat A, ll n)
    {
        mat B;
        B.m[0][0] = B.m[0][1] = 1;
        while (n)
        {
            if (n & 1)
                B = mul(A, B);
            A = mul(A, A);
            n >>= 1;
        }
        return B;
    }
    int main()
    {
        ll n;
        while (cin >> n)
        {
            mat A;
            A.m[0][0] = A.m[0][1] = A.m[1][0] = 1;
            mat B = pow(A, n);
            printf("%lld
    ", B.m[1][0]);
        }
        return 0;
    }
  • 相关阅读:
    CMDB开发
    运维相关开源项目
    SendMessage,BroadcastMessage
    C# System.IO.Path
    Unity[C#] Reflection Use
    Unity By Reflection Update Scripts
    Dictionary CovertTo List
    Unity 脚本的未来发展
    使用Doxygen生成C#帮助文档
    Spine Skeleton Animation(2D骨骼动画)
  • 原文地址:https://www.cnblogs.com/-citywall123/p/9979663.html
Copyright © 2011-2022 走看看