警示后人,如果你 TLE/WA
查看原帖
警示后人,如果你 TLE/WA
613794
jianhe楼主2024/10/14 09:17

TLE: 注意分解质因数不要写挂

for(int j=1;j<=ct&&p[j]<=x;j++)//这样写会T
	if(!(x%p[j])){
		k=0;
		while(!(x%p[j])) x/=p[j],k++;
		if(k&1) t[++tot]=j;
	}

改为

for(int j=1;j<=ct&&p[j]*p[j]<=x;j++)
	if(!(x%p[j])){
		k=0;
		while(!(x%p[j])) x/=p[j],k++;
		if(k&1) t[++tot]=j;
	}
if(x>1) t[++tot]=lower_bound(p+1,p+ct+1,x)-p;

WA: 注意 bfs 起点从 0 开始(如果你和我一样在处理输入质数的情况时,与 0 连边)

要写 for(int i=0;i<=up;i++) bfs(i);

2024/10/14 09:17
加载中...