Codeforces MIN = GCD
这道题的核心只要判断一下除了最小值外其他元素的最大公约数是否和最小值相等即可
首先找到数组中的最小值及其位置,然后排除最小值本身,只考虑能被最小值整除的元素并计算这些元素的最大公约数。如果计算出的最大公约数等于最小值,输出Yes,否则输出No。因为任何序列中,最大公约数总是小于或等于最小值。
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int t,n;cin>>t;while(t--) {cin>>n;vector<int>a(n);for(int&x:a) {cin>>x;}int p=min_element(a.begin(),a.end())-a.begin();int q=0;for (int i=0;i<n;i++) {if (i!=p&&a[i]%a[p]==0) {q=__gcd(q,a[i]);}}if(q==a[p]){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}return 0;
}