题目链接:https://vjudge.net/contest/436484#problem/C
学好英语很重要呀,不然gcd都看不懂
这个题要使交换后没有降序排列,那就把输入的数组先进行排序,然后与输入的数组比对,得到一个新的数组,如果这个数组的全是gcd(x,y)的倍数,那么输出yes,否则no
#include<stdio.h> #include <iostream> #include<algorithm> using namespace std; int main(){ int t,n,a[100005],b[100005],c[100005]; scanf("%d",&t); for(int i=0;i<t;i++){ int min,d=0,e=1; scanf("%d",&n); for(int j=0;j<n;j++){ scanf("%d",&a[j]); b[j]=a[j]; } sort(b,b+n); for(int k=0;k<n;k++){ if(a[k]!=b[k]){ c[d]=a[k]; d++; } } for(int l=0;l<d;l++){ if(c[l]%b[0]!=0){ e=0; printf("NO\n"); break; } } if(e){ printf("YES\n"); } } return 0; }