五一训练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;
}

 

posted @ 2021-05-05 19:20  鬼姬不会跳仇舞  阅读(42)  评论(0)    收藏  举报