你说得对,洛谷虽然过了,但是在gesp上面tle2个点
查看原帖
你说得对,洛谷虽然过了,但是在gesp上面tle2个点
1286053
Nostopathy楼主2024/9/4 15:22

[无辜的小眼神]不是。。我写欧拉筛怎么你了

求助,感谢

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
void write(int x)
{
    if(x<0)
        putchar('-'),x=-x;
    if(x>9)
        write(x/10);
    putchar(x%10+'0');
    return;
}
const int maxN = 1E6;
int T,n,Prime[maxN+10],sum,m;
bool isPrime[maxN+10];
signed main(){
	memset(isPrime,1,sizeof isPrime);
	isPrime[1]=0;
	for(int i=2;i<=maxN;++i){
		if(isPrime[i])Prime[++sum]=i;
		for(int j=1;j<=sum&&i*Prime[j]<=maxN;++j){
			isPrime[i*Prime[j]]=0;
			if(i%Prime[j]==0)break;
		}
	}
	T=read(); while(T--){
		n=read(); m=n;
		set<int>nums;
		while(m>1){
			for(int i=1;i<=sum;++i){
				if(m%Prime[i]==0){
					nums.insert(Prime[i]);
					m=m/Prime[i];
					break;
				}
			}
		}
		write(nums.size()==2);
		cout<<endl;
	}
	return 0;
}

2024/9/4 15:22
加载中...