@[shaozi](/user/1194434) 放个代码。
by xiaoshumiao @ 2024-01-26 12:15:09
@[xiaoshumiao](/user/1008513) 记录翻一下,似乎有源代码。。。
```cpp
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const long long N = 105 ;
const long long mod = 1e9+7 ;
long long n,k;
struct mat{
long long a[N][N];
}A,I;
inline mat operator*(const mat &x,const mat &y){
mat res;
for(long long i=1; i<=n; i++)
for(long long j=1; j<=n; j++)
res.a[i][j]=0;
for(long long i=1; i<=n; i++)
for(long long j=1; j<=n; j++)
for(long long k=1; k<=n; k++)
res.a[i][j] += (x.a[i][k]*y.a[k][j]%mod)%mod;
return res;
}
signed main(){
cin>>n>>k;
for(long long i=1; i<=n; i++)
for(long long j=1; j<=n; j++)
cin>>A.a[i][j];
for(long long i=1; i<=n; i++) I.a[i][i]=1;//¶¨Ò嵥λ¾ØÕó
while(k){
if(k&1) I=I*A;
A=A*A;
k/=2;
}
for(long long i=1; i<=n; i++){
for(long long j=1; j<=n; j++){
cout<<I.a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
```
by 2021zjhs005 @ 2024-01-26 12:32:32
@[shaozi](/user/1194434) 乘的时候没清空。
by xiaoshumiao @ 2024-01-26 12:33:29
@[shaozi](/user/1194434)
```cpp
res.a[i][j] += (x.a[i][k]*y.a[k][j]%mod)%mod;
```
这句话只对 `x.a[i][k]*y.a[k][j]` 进行了取模,这是 `+=` 的原因,应该把它展开一下就行了。
by 2021zjhs005 @ 2024-01-26 12:36:12
@[2021zjhs005](/user/1121995) 非常感谢大佬!!!
by shaozi @ 2024-01-28 14:16:06
@[2021zjhs005](/user/1121995) @[xiaoshumiao](/user/1008513) 不用清空也可以,是我取模不完整。
谢谢大佬~
by shaozi @ 2024-01-28 14:18:16