此程序在本地会RE,但在lg ide可正常运行?
  • 板块学术版
  • 楼主HAuCl4
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/5/20 20:55
  • 上次更新2023/10/23 15:12:33
查看原帖
此程序在本地会RE,但在lg ide可正常运行?
289304
HAuCl4楼主2023/5/20 20:55

RT,在本地还没输入就 RE 了,把断点加在 init() 上调试时,发现程序连一步都没有运行。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=300;
const ll mod=1e9+7;
struct mat{
	ll a[N][N];
	void id(){for(int i=0;i<256;i++) a[i][i]=1;}
};
mat operator *(mat a,mat b)
{
	mat c;
	for(int i=0;i<256;i++)
		for(int j=0;j<256;j++)
			for(int k=0;k<256;k++)
				(c.a[i][k]+=a.a[i][j]*b.a[j][k]%mod)%=mod;
	return c;
}
mat ksm(mat a,int b)
{
	mat ret,tmp=a; ret.id();
	while(b)
	{
		if(b&1) ret=ret*tmp;
		tmp=tmp*tmp;
		b>>=1;
	}
	return ret;
}
mat A,B,C,IN,OUT; 
const int d[50]={0,0,129,192,96,225,48,177,240,24,153,216,120,249,12,141,204,108,237,60,189,252,6,135,198,102,231,54,183,246,30,159,222,126,255,3,195,99,51,243,27,219,123,15,207,111,63,255};
const int nz=47;
void init()
{
	for(int i=0;i<256;i++) A.a[i][256-i]=1;
	for(int j=0;j<=255;j++)
		for(int k=1;k<=47;k++)
				B.a[j^d[k]][j]++;
	C=A*B;
	IN.a[0][143]=1;
}
int n;
int main()
{
	init();
	scanf("%d",&n);
	OUT=IN*ksm(C,n);
	printf("%lld\n",OUT.a[0][143]);
	return 0;
}

2023/5/20 20:55
加载中...