月赛T3
  • 板块学术版
  • 楼主Stars_never_set
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/22 20:09
  • 上次更新2023/11/3 08:12:06
查看原帖
月赛T3
929863
Stars_never_set楼主2023/7/22 20:09

好像自己写成了一个大分讨》》

12分代码求差错

#include<bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
const int N=1e6+6;
const int IM=2147483647;
const long long LLM=9223372036854775807;

inline int read()
{
	int x=0,y=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-') y=-y;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}
	return x*y;
}

/*
  观察样例,根据gcd和lcm的性质,想到两数若不互质所能造成的影响
  容易发现,若有2个数以上的数互质,则必然无解
  可以考虑在输入时记录其最小的非零质因子
 */

int n,a[N];
map<int,int>mp;

void init()
{
	mp.clear();
}

void solve()
{
	init();
	int pd1=0,pd2=0,pd3=0;;
	n=read();
	for(int i=1;i<=n;i++)
	{
		a[i]=read();
		int pd=0;
		for(int j=2;j*j<=a[i];j++)
		{ 
			if(a[i]%j==0)
			{
				mp[j]++;
				if(mp[j]==1) pd1++;//多个
				if(mp[j]==2) pd2++;//有两个的话说明只要不是只有这俩,一定不对
				if(mp[j]>2) pd3++;
				pd=1;
				break;
			}
		}
		if(!pd)
		{
			mp[a[i]]++;
			if(mp[a[i]]==1) pd1++;
			if(mp[a[i]]==2) pd2++;
			if(mp[a[i]]>2) pd3++;
		}
	}
//	printf("%d %d %d\n",pd1,pd2,pd3);
	if(n==2) puts("Yes");
	else if(pd3) puts("No");
	else if(pd1&&pd2) puts("No");
	else if(pd1||pd2) puts("Yes");
	else puts("No");
}

signed main()
{
	int T=read();
	while(T--) solve();
	return 0;
}
2023/7/22 20:09
加载中...