题意
能否把他改为 n o n − d e c r e a s i n g non-decreasing non−decreasing序列
且更换时只能二者的 g c d gcd gcd为数组最小的数时可以更换
题意
显然因为他说的数组中最小的数,那么要更换二者的 g c d gcd gcd为该数就只能,每一个数和这个最小的数 g c d gcd gcd都为最小的数。
所以看一下不在位置上的 g c d ( x , m i n n ) gcd(x,minn) gcd(x,minn)是否为 m i n n minn minn即可
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int a[maxn],b[maxn];
void solve(){
int n;cin>>n;
int minn=1e9+10;
for(int i=1;i<=n;++i){
cin>>a[i];
minn=min(minn,a[i]);
b[i]=a[i];
}
sort(b+1,b+1+n);
int flag=0;
for(int i=1;i<=n;++i){
if(a[i]!=b[i]){
if(__gcd(a[i],minn)!=minn)flag=1;
}
}
if(flag)cout<<"NO\n";
else cout<<"YES\n";
}
int main(){
int t;cin>>t;
while(t--){
solve();
}
}