矩阵快速幂板子

来源:互联网 发布:上海雕塑培训班 知乎 编辑:程序博客网 时间:2024/06/05 02:08
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int MOD=1e9+7;ll n,m,i,j,k;struct Matrix{    ll a[105][105];    Matrix operator *(const Matrix &b)const{        Matrix ret;        for (int i=1;i<=n;i++)            for (int j=1;j<=n;j++){                ret.a[i][j]=0;                for (int k=1;k<=n;k++)                    ret.a[i][j]+=a[i][k]*b.a[k][j],ret.a[i][j]%=MOD;            }        return ret;    }}a;Matrix ksm(Matrix a,long long x){    Matrix ret,k;k=a;    ret=a;x--;    for (;x;x>>=1,k=k*k)        if (x&1) ret=ret*k;    return ret;}int main(){    cin>>n>>k;    for (i=1;i<=n;i++)        for (j=1;j<=n;j++)            cin>>a.a[i][j];//读入矩阵     a=ksm(a,k);    for (i=1;i<=n;i++){        for (j=1;j<n;j++) cout<<a.a[i][j]<<" ";        cout<<a.a[i][n]<<endl;    }    return 0;}

原创粉丝点击