#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
using namespace std;
int bityOf(int i){
int x = i;
int sum = 0;
while(x > 0){
sum+=x%2;
x=x/2;
}
return sum;
}
int main(){
int n = 0;
cin >> n;
int tmp = 0;
int i = 0;
queue<int> Q;
while(tmp < n){
i++;
tmp+=bityOf(i);
//cout << i << " bbbty: " << bityOf(i) << " d\n";
}
int nadmiar = tmp-n;
if(nadmiar > 0){
tmp-=bityOf(i);
Q.push(i);
i--;
}
while(tmp > 0){
if(bityOf(i) > nadmiar){
Q.push(i);
}else{
nadmiar-=bityOf(i);
}
tmp-=bityOf(i);
i--;
}
cout << Q.size() << "\n";
while(!Q.empty()){
cout << Q.front() << " ";
Q.pop();
}
cout << "\n";
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <cstdio> #include <iostream> #include <algorithm> #include <string> #include <queue> using namespace std; int bityOf(int i){ int x = i; int sum = 0; while(x > 0){ sum+=x%2; x=x/2; } return sum; } int main(){ int n = 0; cin >> n; int tmp = 0; int i = 0; queue<int> Q; while(tmp < n){ i++; tmp+=bityOf(i); //cout << i << " bbbty: " << bityOf(i) << " d\n"; } int nadmiar = tmp-n; if(nadmiar > 0){ tmp-=bityOf(i); Q.push(i); i--; } while(tmp > 0){ if(bityOf(i) > nadmiar){ Q.push(i); }else{ nadmiar-=bityOf(i); } tmp-=bityOf(i); i--; } cout << Q.size() << "\n"; while(!Q.empty()){ cout << Q.front() << " "; Q.pop(); } cout << "\n"; return 0; } |
English