zoukankan      html  css  js  c++  java
  • Luogu P1962 斐波那契数列

    Code

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    using namespace std;
    typedef long long ll;
    ll n;
    const int mod = 1000000007;
    struct Matrix{
        int r,c;
        ll data[10][10];
        Matrix(){
            memset(data,0,sizeof(data));
        }
        Matrix(int r,int c){
            this->r = r;
            this->c = c;
            memset(data,0,sizeof(data));
        }
        ll* operator [] (int pos){
            return data[pos];
        }
        Matrix operator * (Matrix B){
            Matrix C(r,B.c);
            for(int i = 1;i <= r;i++){
                for(int j = 1;j <= B.c;j++){
                    for(int k = 1;k <= c;k++){
                        C[i][j] = (C[i][j]%mod + (data[i][k]%mod)*(B[k][j]%mod)%mod)%mod;
                    }
                }
            }
            return C;
        }
    };
    Matrix Pow(Matrix A,ll b){
        Matrix ret(A.r,A.c);
        for(int i = 1;i <= A.r;i++) ret[i][i] = 1;//unit matrix   <==>  1  (integer)
        while(b){
            if(b&1) ret = ret*A;
            A = A*A;
            b >>= 1;
        }
        return ret;
    }
    void solve(){
        if(n <= 2){
            printf("1
    ");
            return;
        }
        Matrix P(2,2);
        P[1][1] = P[1][2] = P[2][1] = 1;
        P[2][2] = 0;
        P = Pow(P,n - 2);
        printf("%lld
    ",(P[1][1]%mod + P[1][2]%mod)%mod);
        return;
    }
    int main(){
        scanf("%lld",&n);
        solve();	
        return 0;
    }
    
    岂能尽如人意,但求无愧我心
  • 相关阅读:
    java 无符号byte转换
    MySQL分区总结
    eclipse @override注解出错
    git 利用hook 实现服务器自动更新代码
    Centos 安装mysql
    Centos Python3安装共存
    chromedriver 代理设置(账号密码)
    PyQt5整体介绍
    python图片云
    PyPt5 浏览器实例
  • 原文地址:https://www.cnblogs.com/Zforw/p/10771164.html
Copyright © 2011-2022 走看看