• 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;
    }
  • 相关阅读:
    316. 去除重复字母
    331. 验证二叉树的前序序列化
    225. 用队列实现栈
    197. 上升的温度
    178. 分数排名
    177. 第N高的薪水
    小程序导航
    css3、js动画特效
    背景透明css
    h5新标签IE8不兼容怎么办?
  • 原文地址:https://www.cnblogs.com/z1141000271/p/7514124.html
Copyright © 2020-2023  润新知