zoukankan      html  css  js  c++  java
  • HIT 2255 Not Fibonacci(矩阵高速幂)

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int mod=10000000;
    struct mat
    {
        long long t[3][3];
        void set()
        {
            memset(t,0,sizeof(t));
        }
    } a,b;
    
    mat multiple(mat a,mat b,int n,int p)
    {
        int i,j,k;
        mat temp;
        temp.set();
        for(i=0; i<n; i++)
            for(j=0; j<n; j++)
            {
                //if(a.t[i][j]!=0)
                    for(k=0; k<n; k++)
                        temp.t[i][k]=(temp.t[i][k]+a.t[i][j]*b.t[j][k]+p)%p;
            }
        return temp;
    }
    
    mat quick_mod(mat b,int n,int m,int p)
    {
        mat t;
        t.set();
        for(int i=0;i<n;i++) t.t[i][i]=1;
        while(m)
        {
            if(m&1)
            {
                t=multiple(t,b,n,p);
            }
            m>>=1;
            b=multiple(b,b,n,p);
        }
        return t;
    }
    
    void init(int p,int q)
    {
       b.set();
       b.t[0][0]=1;
       b.t[1][2]=q;
       b.t[2][0]=1;
       b.t[2][1]=1;
       b.t[2][2]=p;
    }
    int main()
    {
        int A,B,p,q,s,e,t;
        cin>>t;
        while(t--)
        {
            cin>>A>>B>>p>>q>>s>>e;
            long long l,r;
            s--;
            if(s<0) l=0;
            else if(s==0) l=A;
            else if(s==1) l=B+A;
            else {
                init(p,q);
                a=quick_mod(b,3,s,mod);
                l=((A*a.t[0][0]+A*a.t[1][0]+B*a.t[2][0])%mod+mod)%mod;
            }
            if(e==0) r=A;
            else if(e==1) r=B+A;
            else {
                init(p,q);
                a=quick_mod(b,3,e,mod);
                r=((A*a.t[0][0]+A*a.t[1][0]+B*a.t[2][0])%mod+mod)%mod;
            }
            cout<<(r-l+mod)%mod<<endl;
        }
        return 0;
    }
    

  • 相关阅读:
    python-字典
    C#公历转农历算法
    GridView控件显示图片
    SQLite DBHelp
    面向服务体系结构:适用于敏捷的系统
    针对 .NET 框架的安全编码指南
    Microsoft .NET Pet Shop 4
    C#.NET数据库访问类DBHelper
    Emgu CV 高斯建模
    .NET代码编写规范 整理
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6984337.html
Copyright © 2011-2022 走看看