社区讨论
求助!52分求调
P9473[yLOI2022] 西施江南参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo24ff7v
- 此快照首次捕获于
- 2023/10/23 07:49 2 年前
- 此快照最后确认于
- 2023/11/03 08:08 2 年前
#include<iostream>
#include<algorithm>
#include<cstring>
#define ull unsigned long long
using namespace std;
int T,n,a[500010];
ull ans1=1,ans2=1,sum=1;
ull l,r,t;
int read()
{
int x=0;
char c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')
{
x*=10;
x+=c-'0';
c=getchar();
}
return x;
}
bool cmp(int a,int b)
{
return a<b;
}
void work1()
{
r=a[2];
l=a[1];
t=r%l;
while(t!=0)
{
r=l;
l=t;
t=r%l;
}
ans1=l;
for(int i=3;i<=n;i++)
{
if(a[i]%ans1!=0)
{
r=a[i];
l=ans1;
t=r%l;
while(t!=0)
{
r=l;
l=t;
t=r%l;
}
ans1=l;
}
}
}
void work2()
{
ans2=1;
for(int i=1;i<=n;i++)
{
if(ans2==a[i])continue;
if(ans2<a[i]&&a[i]%ans2==0)
{
ans2=a[i];
continue;
}
if(ans2>a[i]&&ans2%a[i]==0)continue;
if(ans2>a[i])
{
r=ans2;
l=a[i];
t=r%l;
}
else
{
r=a[i];
l=ans2;
t=r%l;
}
while(t!=0)
{
r=l;
l=t;
t=r%l;
}
if(l==1)ans2*=a[i];
else ans2*=a[i]/l ;
}
}
int main()
{
T=read();
while(T--)
{
sum=1;
memset(a,0,sizeof a);
n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
sum*=a[i];
}
sort(a+1,a+n+1,cmp);
work1();
work2();
if(ans1*ans2==sum)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...