zoukankan      html  css  js  c++  java
  • 51nod 1242 斐波那契数列的第N项

    斐波那契数列的定义如下:
     
    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的结果即可。
     
     
     

    输入

    输入1个数n(1 <= n <= 10^18)。

    输出

    输出F(n) % 1000000009的结果。

    输入样例

    11

    输出样例

    89


    矩阵快速幂
    代码:
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define mod 1000000009
    using namespace std;
    
    void mul(long long (*a)[2],long long (*b)[2]) {
        long long d[2][2] = {0};
        for(int i = 0;i < 2;i ++) {
            for(int j = 0;j < 2;j ++) {
                for(int k = 0;k < 2;k ++) {
                    d[i][j] += (a[i][k] * b[k][j]) % mod;
                }
                d[i][j] %= mod;
            }
        }
        for(int i = 0;i < 2;i ++) {
            for(int j = 0;j < 2;j ++) {
                a[i][j] = d[i][j];
            }
        }
    }
    int f(long long n) {
        long long a[2][2] = {1,1,1,0},d[2][2] = {1,0,0,1};
        while(n) {
            if(n % 2)mul(d,a);
            n /= 2;
            mul(a,a);
        }
        return d[1][0];
    }
    int main() {
        long long n;
        cin>>n;
        cout<<f(n);
    }
  • 相关阅读:
    [BZOJ]2959: 长跑
    http状态码 超详细
    mysql注入常用函数
    tomcat7远程代码执行 ImageMagick 命令执行漏洞
    kali安装redis
    反序列化
    CSP 之dvwa
    token防爆破?
    变量覆盖
    安全狗绕过
  • 原文地址:https://www.cnblogs.com/8023spz/p/9948654.html
Copyright © 2011-2022 走看看