https://codeforces.com/problemset/problem/1401/C
将其从小到大排序,挨个比较,将不是在正确位置上的数,存到ans里。
然后看ans里的每一个数和最小值gcd,看是不是最小值,如果是,那么这些数有一定可以通过某些变换到正确的位置上。
#includeusing namespace std; const int N=1e5*2+10; int a[N],b[N]; int gcd(int a,int b) {return b?gcd(b,a%b):a;} int main(void) { int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0;i >a[i],b[i]=a[i]; sort(b,b+n); vector ans; for(int i=0;i



