ACM矩陣---題目總結+矩陣構造

矩陣補題、、、、、

矩陣快速冪板子
const int z = 2;
struct ju{
    long long a[z][z];
};
ju muli(ju A,ju B,int mod){
    ju C;
    for(int i=0;i<z;++i){
        for(int j=0;j<z;++j){
            C.a[i][j]=0;
            for(int k=0;k<z;++k){
                C.a[i][j]+=A.a[i][k]*B.a[k][j];
                C.a[i][j]%=mod;
            }
        }
    }
    return C;
}
ju init(){
    ju res;
    for(int i=0;i<z;++i){
        for(int j=0;j<z;++j){
            if(i==j)res.a[i][j]=1;
            else res.a[i][j]=0;
        }
    }
    return res;
}
ju pow(ju A,int n,int mod){
    ju res=init(),temp=A;
    for(;n;n/=2){
        if(n&1)res=muli(res,temp,mod);
        temp=muli(temp,temp,mod);
    }
    return res;
}
void print(ju A){
    for(int i=0;i<z;++i){
        for(int j=0;j<z;++j){
            cout<<A.a[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
}

第一題

題目傳送門 2019河北省大學生程序設計競賽(重現賽) B題
題意: 意思大概就是叫你求等比數列的前n項和,其中一種解法就是矩陣快速冪。。。。

/*
s[i]=s[i-1]*q+q;
|s 1|*|q 0|
|0 1| |q 1|
|sq+q 1|
|0    1|  
*/
s[i] 表示的就是S, 然後 後面的矩陣是個常量。。。。。

AC 代碼

點這裏

持續更新。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章