复杂度(n^3*log(exp)) #define maxn 6 int ans[maxn][maxn]; int val[maxn][maxn]; int temp[maxn][maxn]; void matrixMul(int a[][maxn],int b[][maxn],int n,int mod) { int i,j,k; for(i=0;i<n;i++) for(j=0;j<n;j++) temp[i][j]=0; for(i=0;i<n;i++) { for(k=0;k<n;k++) { if(a[i][k]==0) continue; for(j=0;j<n;j++) { if(b[k][j]==0) continue; temp[i][j]+=a[i][k]*b[k][j]; if(temp[i][j]>=mod||temp[i][j]<=-mod) temp[i][j]%=mod; } } } for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=temp[i][j]; } void matrixMul(int n,int exp,int mod) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) ans[i][j]=(i==j); for(;exp;exp>>=1) { if(exp&1) matrixMul(ans,val,n,mod); matrixMul(val,val,n,mod); } }