谁来救救我,“段错误”怎么整

P3390 【模板】矩阵快速幂

```c #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <cmath> #define N 1001 using namespace std; typedef long long ll; ll w; int k; const ll p=1000000007LL; struct node { ll g[N][N]; }f,ans; void mul(node &x,node &y,node &z);//矩阵乘法 void mul_one(node &x); void fast_pow(int k); int main() { cin>>w>>k; for(int i=1;i<=w;i++) for(int j=1;j<=w;j++) cin>>f.g[i][j]; fast_pow(k); for(int i=1;i<=w;i++) for(int j=1;j<=w;j++) cout<<ans.g[i][j]<<endl; return 0; } void fast_pow(int k)//k表示k次幂 { node t,tmp=f; mul_one(ans); while(k) { if(k&1) { mul(ans,tmp,t); ans=t; } mul(tmp,tmp,t); tmp=t; k>>=1; } return ; } void mul_one(node &x) { for(int i=1;i<=w;i++) for(int j=1;j<=w;j++) { if(i==j) x.g[i][j]=1LL; else x.g[i][j]=0LL; } return ; } void mul(node &x,node &y,node &z)//矩阵乘法 { memset(z.g,0,sizeof(z.g));//z数组记得清零 for(int i=1;i<=w;i++) for(int j=1;j<=w;j++) for(int k=1;k<=w;k++) z.g[i][j]+=(x.g[i][k]*y.g[k][j])%p; return ; } ```
by 太过年轻ya @ 2018-07-17 19:21:20


@管理
by 太过年轻ya @ 2018-07-17 19:35:43


数组可以开大点,把引用放到主函数试试
by fly20040720 @ 2018-07-17 19:38:26


@[Ho0eDdzVW7](/space/show?uid=27950) 什么叫引用放到主函数?
by 太过年轻ya @ 2018-07-17 19:47:48


你的程序崩了, 了解? PS: 从第一行开始下断点,F7,在崩溃那一句注意有没有越界、爆栈的问题
by username_invalid @ 2018-07-17 19:57:25


@[Chenye_Jin](/space/show?uid=33405) 对啊,可是我感觉没爆啊,但是一进这个函数程序就退出了
by 太过年轻ya @ 2018-07-17 20:12:11


它是怎么爆掉的,求解原理啊
by 太过年轻ya @ 2018-07-18 09:52:14


|