这道题在梦里就能切了,显然每一位都可以拆开,那么一次操作相当于将一个1左移或者右移,那么全部都移到一侧肯定最佳
#include#define UL long longint n,v[32]={ 0},c[32];UL t=0;int main(){ scanf("%d",&n); for(int x,i=0;i >=1) if(x&1) c[j]++; } for(int i=0;i<30;++i) if(c[i]) v[i]=1; for(int mn,x;;){ mn=1<<27; x=0; for(int i=0;i<30;++i) if(v[i]&&c[i]