• 1242 斐波那契数列的第N项


    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     
    斐波那契数列的定义如下:
     
    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的结果。
    Input示例
    11
    Output示例
    89

    矩阵快速幂模板题.

     1  #include <bits/stdc++.h>
     2 #define ll long long int
     3 using namespace std;
     4 typedef vector<ll> vec;
     5 typedef vector<vec> mat;
     6 const int M = 1e9+9;
     7 
     8 mat mul(mat &A,mat &B){
     9     mat C(A.size(),vec(B[0].size()));
    10     for(int i=0;i<A.size();i++){
    11         for(int j=0;j<B[0].size();j++){
    12             for(int k=0;k<B.size();k++){
    13                 C[i][j] = (C[i][j]+A[i][k]*B[k][j])%M;
    14             }
    15         }
    16     }
    17     return C;
    18 }
    19 
    20 mat pow(mat A,ll n){
    21     mat B(A.size(),vec(A.size()));
    22     for(int i=0;i<A.size();i++)
    23         B[i][i] = 1;
    24     while(n>0){
    25         if(n&1)
    26             B = mul(B,A);
    27         A = mul(A,A);
    28         n>>=1;
    29     }
    30     return B;
    31 }
    32 
    33 ll n;
    34 int main(){
    35     cin>>n;
    36     mat A(2,vec(2));
    37     A[0][0] = 1,A[0][1] = 1;
    38     A[1][0] = 1,A[1][1] = 0;
    39     A = pow(A,n);
    40     cout<<A[1][0]<<endl;
    41     return 0;
    42 }
  • 相关阅读:
    Spring Boot----整合SpringCloud
    python apscheduler学习
    Java8 Lambda
    Java Json操作
    python 环境相关
    大数据 Hadoop 单机版安装
    大数据 CDH 6.2 安装
    Java8 时间API
    python 字符串方法
    《JavaScript高级程序设计》笔记——第一章到第三章
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/9537247.html
Copyright © 2020-2023  润新知