D. Alex and Julian
题链
很容易发现我们要是两个数互相不构成奇环的话
=(a+b)/gcd(a,b)为偶数
我们发现如果a b为奇数的时候一定可以 并且奇偶一定不同组
但是发现2 4这种又不行
模拟一下大概分组就是
1 3 5 7...
2 6 10 14...
4 12 20 28...
8...
我们可以发现开头都是2的多少次方 然后再乘1乘3乘5乘7....
这样我们就知道了我们只能保留上面一组
void solve(){
int n;cin>>n;
vector<int>v[61],a(n+1);
for(int i=1;i<=n;i++){
cin>>a[i];
int x=a[i],cnt=0;
while(x%2==0){
x/=2;
cnt++;
}
v[cnt].push_back(a[i]);
}
int mx=0,ans;
for(int i=0;i<=60;i++){
if(v[i].size()>mx){
mx=max(mx,(int)v[i].size());
ans=i;
}
}
cout<<n-mx<<endl;
set<int>s;
for(auto i:v[ans])s.insert(i);
for(int i=1;i<=n;i++){
if(s.count(a[i])==0){
cout<<a[i]<<' ';
}
}
}
标签:586,...,cnt,int,Codeforces,ans,Div,mx
From: https://www.cnblogs.com/ycllz/p/17004164.html