求助:为什么全是RE
查看原帖
求助:为什么全是RE
456675
a_sad_soul楼主2022/7/7 19:33
#include<bits/stdc++.h>
using namespace std;
const long long MOD=10e9+7;
long long m[202][202],mid[202][202],b[202][202];
long long n,k;
void pow(long long kk)
{
    for(int i=1;i<=n;++i)
        b[i][i]=1;
    while(kk)
    {
        memset(mid,0,sizeof(mid));
        if(k&1)
        {
            for(int i=1;i<=n;++i)
                for(int j=1;j<=n;++j)
                    for(int k=1;k<=n;++k)
                        mid[i][j]=(mid[i][j]%MOD+((b[i][k]%MOD)*(m[k][j]%MOD))%MOD)%MOD;
            for(int i=1;i<=n;++i)
                for(int j=1;i<=n;++j)
                    b[i][j]=mid[i][j];
        }
        memset(mid,0,sizeof(mid));
        for(int i=1;i<=n;++i)
                for(int j=1;j<=n;++j)
                    for(int k=1;k<=n;++k)
                        mid[i][j]=(mid[i][j]%MOD+((m[i][k]%MOD)*(m[k][j]%MOD))%MOD)%MOD;
        for(int i=1;i<=n;++i)
            for(int j=1;i<=n;++j)
                m[i][j]=mid[i][j];
        kk>>=1;
    }
}
int main()
{
    cin>>n>>k;
    long long ll=n;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            scanf("%lld",&m[i][j]);
            
    pow(k);
    for(int i=1;i<=ll;++i)
    {
        for(int j=1;j<=ll;++j)
        {           
            cout<<b[i][j]<<" ";
        }
        cout<<endl;
    }
    //cout<<1<<endl;
    return 0;
}
2022/7/7 19:33
加载中...