建议加强数据
查看原帖
建议加强数据
1414950
a_void楼主2024/11/18 21:17

重载乘法,没有初始化也放过去了 可知数据有多水了

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll mod=1e9+7;
const ll  N =1e2+5;
ll n,k;
struct M{
    ll m[N][N];
};
M operator*(const M&A,const M&B){
    M C;//这边没有初始化
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                C.m[i][j]=(C.m[i][j]+A.m[i][k]*B.m[k][j]%mod)%mod;
    return C;
}
M aaa,_1;
void init(){for(int i=1;i<=n;i++)_1.m[i][i]=1;}
M fp(M a,ll b){
    if(b==0)    return _1;
    M res=fp(a,b/2);
    if(b%2==0)  return res*res;
    return res*res*a;
}
int main(){
    cin>>n>>k;
    init();
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>aaa.m[i][j];
    aaa=fp(aaa,k);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)   
            cout<<aaa.m[i][j]<<" ";
        cout<<"\n";
    }
    return 0;
}
2024/11/18 21:17
加载中...