Codeforces Round #688 (Div. 2) D
D. Checkpoints
对于单独的一个1 我们知道他的贡献为2
11 呢贡献值为4
101 贡献值为8
1001 贡献值为16
然后二进制拼凑就可以了
对于有奇数的显然-1
void solve(){
int n;cin>>n;
if(n&1){
cout<<-1<<endl;
return;
}
vector<int>ans;
for(int i=63;i>=0;i--){
if((1ll<<i)&n){
if(i!=1){
ans.push_back(1);
for(int j=1;j<i-1;j++)ans.push_back(0);
}
ans.push_back(1);
}
}
cout<<ans.size()<<endl;
for(auto i:ans)cout<<i<<" ";cout<<endl;
}