zoukankan      html  css  js  c++  java
  • poj 3070

    矩阵快速幂模板题

    递推公式

    ac代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <queue>
    #include <stack>
    #define mt(a) memset(a,0,sizeof(a))
    using namespace std;
    const int mod=10000;
    struct Martix
    {
        int mp[5][5];
        int r,c;
    };
    Martix mul(Martix a,Martix b)
    {
        int r=a.r;
        int c=b.c;
        Martix temp;
        temp.r=r;
        temp.c=c;
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                temp.mp[i][j]=0;
                for(int k=0;k<r;k++)
                {
                    temp.mp[i][j]=(a.mp[i][k]*b.mp[k][j]+temp.mp[i][j])%mod;
                }
            }
        }
        return temp;
    }
    int pow(Martix a,int k)
    {
        Martix ans;
        ans.r=2;
        ans.c=1;
        ans.mp[0][0]=1;//
        ans.mp[1][0]=0;
        while(k)
        {
            if(k&1) ans=mul(a,ans);
            k/=2;
            a=mul(a,a);
        }
        return ans.mp[0][0]%mod;
    }
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            if(n==-1) break;
            Martix a;
            if(n==0)
            {
                cout<<0<<endl;
                continue;
            }
            a.r=a.c=2;
            a.mp[0][0]=a.mp[0][1]=a.mp[1][0]=1;
            a.mp[1][1]=0;
            int key=pow(a,n-1);
            cout<<key<<endl;
        }
        return 0;
    }
  • 相关阅读:
    ios MD5大小写加密
    清理xcode缓存
    iOS 动画(基于Lottie封装)
    wkWebView 的一些问题
    ios 画板的使用
    redis安装和使用
    memcached 配置与安装
    mysql主从同步配置
    ansible playbook使用
    ubuntu18创建rc.local
  • 原文地址:https://www.cnblogs.com/z1141000271/p/7514124.html
Copyright © 2011-2022 走看看