地址:https://www.luogu.com.cn/problem/P2651
题意如此
解析:
要想分数可化为整数,那么分子与分母的最大公因数为分母本身。
a1,a2,......an
可以得出,不管怎么变换顺序,a1必为分子,a2必为分母。
要想分子能整除分母,那么分子一定要包含分母的所有因数而且数目大于等于分母。
所以,最优的组合一定是:a1*a3*a4.....*an/(a2)
这样,分子可以包含尽量多的因数种类和数目。
直接乘的话,会爆int,所以只要a2去除每一个gcd(a2,ai)就可以了,只要a2最终为1,即yes
#include<cstdio> #include<map> #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int maxn=2e5+10; int main() { // 4 0 20 int t; cin>>t; while(t--) { int n; cin>>n; int a,b; cin>>a>>b; b=b/__gcd(a,b); for(int i=3;i<=n;i++) { int x; cin>>x; b=b/__gcd(b,x); } if(b==1) cout<<"Yes"<<endl; else cout<<"No"<<endl; } }