TLE求助
查看原帖
TLE求助
501947
DengDuck鄧德楼主2022/6/11 15:06
#include<bits/stdc++.h>
#define ll long long
#define ld long double
using namespace std;
ll n,k;
const long long mod=1e9+7;
struct Matrix
{
    ll n,m,a[505][505];
    Matrix Input()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>a[i][j];
            }
        }
    }
    Matrix Input(ll x)
    {
        n=x,m=x;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>a[i][j];
            }
        }
    }
    Matrix Input(ll x,ll y)
    {
        n=x,m=y;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>a[i][j];
            }
        }
    }  
    Matrix Output()
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cout<<a[i][j]<<' ';
            }
            cout<<endl;
        }
    }     
    Matrix operator+(const Matrix &b)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                a[i][j]+=b.a[i][j];
            }
        }
    }
    Matrix operator-(const Matrix &b)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                a[i][j]-=b.a[i][j];
            }
        }
    }
    Matrix operator*(const Matrix &b)
    {
        Matrix c;
        c.n=n;
        c.m=b.m;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=b.m;j++)
            {
                for(int k=1;k<=m;k++)
                {
                    c.a[i][j]+=a[i][k]*b.a[k][j];
                    c.a[i][j]%=mod;
                }
            }
        }
    }

} a;  
Matrix ksm(Matrix x,ll y)
{
    Matrix ans=x;
    y--;
    while(y)
    {
        if(y&1)
        {
            ans=ans*x;
        }
        x=x*x;
        y>>=1;
    }
    return ans;
}
int main()
{
    cin>>n>>k;
    a.Input(n);
    a=ksm(a,k);
    a.Output();
}
2022/6/11 15:06
加载中...