警示后人
查看原帖
警示后人
482610
Mortidesperatslav楼主2023/7/31 15:41
#include<bits/stdc++.h>
using namespace std;
int p[2005000],cnt=0;
bool vs[2005000];
int a[300005];
int t,n;
bool vis[100001];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	for(register int i=2;i<=100000;i++){
		if(!vs[i]){
			p[cnt++]=i;
			vs[i]=1;
		}
		for(register int j=0;j<cnt;j++){
			if(i*p[j]>100000)break;
			vs[i*p[j]]=1;
			if(i%p[j]==0)break;
		}
	}
	cin>>t;
	while(t-->0){
		memset(vis,0,sizeof(vis));
		cin>>n;
		for(register int i=0;i<n;i++)cin>>a[i];
		sort(a,a+n);
		for(register int i=0;i<n-1;i++)if(a[i]==a[i+1]){cout<<"No\n";goto l;}
        if(n==2){
            cout<<"Yes\n";
            continue;
        }
		for(register int i=0;i<n;i++)
			for(register int j=0;j<cnt;j++)
				if(p[j]!=0&&a[i]%p[j]==0){
					if(vis[j]){
						cout<<"No\n";
						goto l;
					}
					vis[j]=1;
				}
		cout<<"Yes\n";
		l:{}
	}
}

一定要特判下 p[j]!=0,否则会 RE,100->96。

2023/7/31 15:41
加载中...