zoukankan      html  css  js  c++  java
  • 矩阵快速幂取模

    #include<iostream>
    using namespace std;
    const int Mod=10000;
    int main()
    {
        long long n,a,b,c,d,a1,b1,c1,d1,a2,b2,c2,d2;
        while(cin>>n)
        {
            if(n==-1)
            break;
            if(n==0||n==1)
            {
            cout<<n<<endl;
            continue; 
            } 
            a=1;b=0;c=0;d=1;
            a2=1;b2=1;c2=1;d2=0;
            while(n>0)
            {
                if(n%2!=0)
                {
                    a1=(a*a2)%Mod+(b*c2)%Mod;
                    b1=(a*b2)%Mod+(b*d2)%Mod;
                    c1=(c*a2)%Mod+(d*c2)%Mod;
                    d1=(c*b2)%Mod+(d*d2)%Mod;
                    a=a1;b=b1;c=c1;d=d1;
                }
                n=n/2;
                a1=((a2*a2)%Mod+(b2*c2)%Mod)%Mod;
                b1=((a2*b2)%Mod+(b2*d2)%Mod)%Mod;
                c1=((a2*c2)%Mod+(c2*d2)%Mod)%Mod;
                d1=((b2*c2)%Mod+(d2*d2)%Mod)%Mod;
                a2=a1;b2=b1;c2=c1;d2=d1;
            }
            if(b%Mod==0)
            cout<<"0"<<endl;
            else
            cout<<b%Mod<<endl;
        }
    }
  • 相关阅读:
    第二阶段总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    开学总结
  • 原文地址:https://www.cnblogs.com/Leozi/p/10835193.html
Copyright © 2011-2022 走看看