80分RE #20,21,22,24,25 求助
查看原帖
80分RE #20,21,22,24,25 求助
508032
int08楼主2023/7/22 19:25

RT

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
int n,t,i,j,k,a[524288],p,r[1300],s[10086];bool q[12345],b;
int main()
{
	cin>>t;
	for(i=2;i<=10001;i++)
	{
		q[i]=true;
	}
	for(i=2;i<=10001;i++)
	{
		if(q[i]==true)
		{
			p++;r[p]=i;
			for(j=2*i;j<=10001;j+=i) q[j]=false;
		}
	}
	for(k=1;k<=t;k++)
	{
		cin>>n;
		for(i=1;i<=n;i++)
			scanf("%d",&a[i]);
		if(n==2)
		{
			printf("Yes\n");
			continue;
		}
		sort(a+1,a+n+1);
		b=false;
		for(i=1;i<=n-1;i++)
		{
			if(a[i]==a[i+1])
			{
				printf("No\n");
				b=true;
				break;
			}
		}
		if(b==true) continue;
		for(i=1;i<=10001;i++) s[i]=0;
		for(i=1;i<=n;i++)
		{
			for(j=1;r[j]<=sqrt(a[i]);j++)
			{
				while(a[i]%r[j]==0)
				{
					a[i]/=r[j];
					if(s[r[j]]!=0&&s[r[j]]!=i)
					{
						printf("No\n");b=true;
						break;
					}
					else s[r[j]]=i;
				}
				if(b==true) break;
			}
			if(b==true) break;
			if(1<a[i]&&a[i]<=10000)
			{
				if(s[a[i]]!=0&&s[a[i]]!=i)
				{
					printf("No\n",i);b=true;
					break;
				}
				else s[a[i]]=i;
				a[i]=1;
			}
		}
		if(b==true) continue;
		sort(a+1,a+n+1);
		for(i=1;i<=n-1;i++)
		{
			if(a[i]==a[i+1]&&a[i]!=1)
			{
				printf("No\n");
				b=true;
				break;
			}
		}
		if(b==false) printf("Yes\n");
	}
	return 0;
}
2023/7/22 19:25
加载中...