#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; } |