紫书上原题
用gcd来做
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef long long ll;
inline int gcd(ll a,ll b)
{
return b==0 ? a : gcd(b,a%b);
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int n;
ll x,y;
scanf("%d",&n);
scanf("%lld%lld",&y,&x);
x=x/gcd(x,y);
for (int i=3;i<=n;i++)
{
scanf("%lld",&y);
x=x/gcd(x,y);
}
if (x==1) printf("YES");else printf("NO");
printf("\n");
}
return 0;
}
总结
1:实际上这道题关键还是是否能够构造出一种方案,就是一种贪心的策略。
分析题目的性质,将最优的方案构造出来