五一训练C-3
https://vjudge.net/contest/436484#problem/C
因为和gcd(a[i],a[j])=a[]中的最小值才能交换,那么将a[]与b[](排好序的a[])进行比较,如果a[i]不能被min整除且a[i]不等于b[i],就不能得到一个不下降的序列输出NO.
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int a[N],b[N]; int main(){ int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); int k=1e9; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); b[i]=a[i]; k=min(k,a[i]); } sort(b+1,b+1+n); bool flag=1; for(int i=1;i<=n;i++){ if(a[i]==b[i]||a[i]%k==0) continue; flag=0;break; } if(flag) puts("YES"); else puts("NO"); } return 0; }

浙公网安备 33010602011771号