不太看的懂![](//图.tk/0)
建议搞个结构体
```cpp
const int mxn=33;
struct mat{
int val[mxn][mxn];
inline void init0(){memset(val,0,sizeof(val));}
inline void init1(){
init0();
for(int i=0;i<mxn;++i)val[i][i]=1;
}
};
const ll md=1000000007;
inline void add(int&x,int y){
x+=y;
if(x>=md)x-=md;
}
inline mat operator *(mat a,mat b){
mat c;c.init0();
for(int k=1;k<=32;++k)for(int i=1;i<=32;++i)for(int j=1;j<=32;++j)add(c.val[i][j],1ll*a.val[i][k]*b.val[k][j]%md);
return c;
}
inline mat qp(mat x,ll y){
mat rt;rt.init1();
for(;y;y>>=1,x=x*x)if(y&1)rt=rt*x;
return rt;
}
```
by RedLycoris @ 2021-10-03 11:32:30
@[paulzrm](/user/226760) 谢谢![](//图.tk/3)
by cyhyyds @ 2021-10-03 11:34:50
好像是每次读入n时数组没重置
by Bezime @ 2021-10-03 11:39:54
@[Bezime](/user/354308) 谢谢!
~~多测没清空~~
by cyhyyds @ 2021-10-03 13:06:31
@[cyhyyds](/user/508316) 不用谢
~~我也经常这样~~
by Bezime @ 2021-10-03 14:18:41