为啥全是0
查看原帖
为啥全是0
575655
Chtholly_is_cute楼主2024/7/9 21:02

code:

#include<bits/stdc++.h>
using namespace std;
const int N=1e2+3,mod=1e9+7;
struct Matrix{
    int a[N][N];
};
Matrix operator*(const Matrix&a,const Matrix&b){
    Matrix c;
    memset(c.a,0,sizeof(c.a));
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            for(int k=0;k<N;k++){
                c.a[i][k]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;
            }
        }
    }
}
Matrix POW(Matrix X,int k){
    Matrix Ret;
    memset(Ret.a,0,sizeof Ret.a);
    for(int i=0;i<N;i++)Ret.a[i][i]=1;
    while(k){
        if(k&1)Ret=Ret*X;
        X=X*X;
        k>>=1;
    }
    return Ret;
}
int main(){
    Matrix A;
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)cin>>A.a[i][j];
    }
    Matrix C=POW(A,k);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<C.a[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}
2024/7/9 21:02
加载中...