矩阵 Aij^n 的模板:
贴代码:
#include <bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define fo1(a,b) for(int a=0;a<b;++a)
#define fo2(a,b) for(int a=1;a<=b;++a)
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=1e2+5;
const int mod=1e9+7;
int n;
ll k;
struct Q{
ll matrix[maxn][maxn];
Q(){
mem(matrix,0);
}
Q operator *(const Q b) const{
Q res;
fo2(i,n)
fo2(j,n)
fo2(k,n)
res.matrix[i][j]=(res.matrix[i][j]+matrix[i][k]*b.matrix[k][j])%mod;
return res;
}
}ans,base;
void mult(){
while(k){
if(k&1)
ans=ans*base;
base=base*base;
k>>=1;
}
}
int main()
{
cin>>n>>k;
fo2(i,n)
ans.matrix[i][i]=1;
fo2(i,n)
fo2(j,n)
cin>>base.matrix[i][j];
mult();
fo2(i,n){
fo2(j,n)
printf("%lld ",ans.matrix[i][j]);
printf("\n");
}
return 0;
}