MnZn求助Dev-C++编译
  • 板块学术版
  • 楼主jiangtaizhe001
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/10/10 19:11
  • 上次更新2023/11/4 04:08:31
查看原帖
MnZn求助Dev-C++编译
215042
jiangtaizhe001楼主2021/10/10 19:11

这是 P3390 的 AC 代码,但是不知到为什么本机一直编译过不去。
提交记录

#include<cstdio>
#define I inline
#define db double
#define U unsigned
#define Re register
#define ll long long
#define RI register int
#define ull unsigned long long
#define swap(x,y) x^=y^=x^=y;
#define abs(x) ((x)>0?(x):(-(x)))
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define Me(a,b) memset(a,b,sizeof(a))
#define EPS (1e-7)
#define INF (0x7fffffff)
#define LL_INF (0x7fffffffffffffff)
#define MOD 1000000007
#define maxn 139
//#define debug
using namespace std;
#define Type long long
I Type read(){
	Type sum=0; int flag=0; char c=getchar();
	while((c<'0'||c>'9')&&c!='-') c=getchar(); if(c=='-') c=getchar(),flag=1;
	while('0'<=c&&c<='9'){ sum=(sum<<1)+(sum<<3)+(c^48); c=getchar(); }
	if(flag) return -sum; return sum;
}
struct Mat{
	ll a[maxn][maxn]; int n,m;
	Mat operator + (const Mat x) const {
		Mat res; RI i,j; res.n=this->n; res.m=this->m;
		for(i=1;i<=res.n;i++) for(j=1;j<=res.m;j++) res.a[i][j]=this->a[i][j]+x.a[i][j];
		return res;
	}
	Mat operator - (const Mat x) const {
		Mat res; RI i,j; res.n=this->n; res.m=this->m;
		for(i=1;i<=res.n;i++) for(j=1;j<=res.m;j++) res.a[i][j]=this->a[i][j]-x.a[i][j];
		return res;
	}
	Mat operator * (const Mat x) const {
		Mat res; RI i,k,j,r; res.n=this->n; res.m=x.m;
		for(i=1;i<=res.n;i++) for(j=1;j<=res.m;j++) res.a[i][j]=0;
		for(i=1;i<=res.n;i++) for(k=1;k<=this->m;k++){
			r=this->a[i][k];
			for(j=1;j<=res.m;j++) res.a[i][j]+=x.a[k][j]*r,res.a[i][j]%=MOD;
		} return res;
	}
}a,ans,MarI; int n; ll k;
void getI(){ MarI.n=MarI.m=n; for(RI i=1;i<=n;i++) MarI.a[i][i]=1; return; }
Mat pow(Mat x,ll y){
	Mat tmp=x,res=MarI;
	while(y){ if(y&1) res=res*tmp; tmp=tmp*tmp; y>>=1; }
	return res;
}
int main(){
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
	n=read(); k=read(); RI i,j; getI(); a.n=a.m=n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) a.a[i][j]=read();
	ans=pow(a,k); for(i=1;i<=n;i++){ for(j=1;j<=n;j++) printf("%lld ",ans.a[i][j]); putchar('\n'); }
	return 0;
}

编译器输出:internal complier error: Segmentation fault.
有人知道这是什么原因吗?

2021/10/10 19:11
加载中...