当前位置: 代码迷 >> 综合 >> C. Mere Array
  详细解决方案

C. Mere Array

热度:69   发布时间:2024-03-05 23:36:35.0

题意

能否把他改为non?decreasingnon-decreasingnon?decreasing序列

且更换时只能二者的gcdgcdgcd为数组最小的数时可以更换

题意

显然因为他说的数组中最小的数,那么要更换二者的gcdgcdgcd为该数就只能,每一个数和这个最小的数gcdgcdgcd都为最小的数。

所以看一下不在位置上的gcd(x,minn)gcd(x,minn)gcd(x,minn)是否为minnminnminn即可

#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();}
}
  相关解决方案