zoukankan      html  css  js  c++  java
  • poj 3070

    题面
    大意就是求斐波那契数列第n项,做法为矩阵快速幂。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define LL long long
    
    using namespace std;
    const int mod = 10000; 
    
    struct Mat{
        LL a[4][4];
        Mat(){
            memset(a,0,sizeof(a));
        }
        Mat operator*(const Mat &h){
            Mat c;
            for(register int i=1;i<=2;i++)
                for(register int j=1;j<=2;j++)
                    for(register int k=1;k<=2;k++){
                        c.a[i][j]+=a[i][k]%mod*h.a[k][j]%mod;
                        c.a[i][j]%=mod;
                    }
            return c;
        }
    }ans,f;
    
    int n;
    
    inline void fast_pow(Mat b,int k){
        for(;k;k>>=1){
            if(k&1) f=f*b;
            b=b*b;
        }
    }
    
    int main(){
        while(~scanf("%d",&n)){
            if(n==-1) break;
            f.a[1][1]=0;f.a[1][2]=1;
            ans.a[2][1]=ans.a[1][2]=ans.a[2][2]=1;
            ans.a[1][1]=0;
            fast_pow(ans,n);
            printf("%lld
    ",f.a[1][1]);
        }
        return 0;
    }
  • 相关阅读:
    Fusion access
    组网架构
    DHCP中继
    Vxlan配置
    redis多实例
    ansible实现redis角色
    ansible如何ssh免密链接(基于key验证)
    MySQL主从复制
    MySQL范例
    Ubuntu2004安装
  • 原文地址:https://www.cnblogs.com/sdfzsyq/p/9677007.html
Copyright © 2011-2022 走看看