题意
给定x1/x2/x3/x4..../xn,可以加入括号改变运算顺序,询问是否可以使改变后的值为整数。
可知x1必为分母,x2必为分子,x3,x4...xn可以为分子也可以为分母。
可以贪心证明
若x1∗x3∗x4∗...∗x4x2不为整数,那么就没有其他方案使改变后的值为整数。
所以我们只要判断这个值是不是整数就行了,即
判断x2/gcd(x2,x1)/gcd(x2,x3)/.../gcd(x2,xn)是否为1
#include <cstdio>
int gcd(int x,int y){return y?gcd(y,x%y):x;}
int n,x,y,t;
int main(){
for(scanf("%d",&t);t;t--){
scanf("%d%d%d",&n,&y,&x);
x/=gcd(x,y);
for(int i=1;i<=n-2;i++){
scanf("%d",&y);
x/=gcd(x,y);
}
if(x==1) puts("YES");else puts("NO");
}
return 0;
}