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;
}
标签:int,值为,Codeforces,贡献,688,Div,Round
From: https://www.cnblogs.com/ycllz/p/16881286.html