1 条题解

  • 0
    @ 2026-8-7 16:25:40
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int mod=998244353;
    int n;
    struct N{
    	ll a[210][210];
    	N(){memset(a,0,sizeof(a));};
    };
    N operator*(N a,N b){
    	N c;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			for(int k=1;k<=n;k++){
    				c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;
    			}
    		}
    	}
    	return c;
    }
    N qpow(N a,ll b){
    	N ans;
    	for(int i=1;i<=n;i++)ans.a[i][i]=1;
    	for(;b;b>>=1,a=a*a)if(b&1)ans=ans*a;
    	return ans;
    }
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cin>>n;
    	ll k;
    	cin>>k;
    	N a;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cin>>a.a[i][j];
    		}
    	}
    	a=qpow(a,k);
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cout<<a.a[i][j]<<" \n"[j==n];
    		}
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    3312
    时间
    5000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    8
    已通过
    4
    上传者