#include <bits/stdc++.h>
using namespace std;
int s[1000005];
int32_t main() {
ios_base::sync_with_stdio(0);
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
s[i] = s[i - 1] + __builtin_popcount(i);
}
vector<int> res;
int j = n;
while (n > 0) {
while (s[j - 1] >= n) j--;
res.push_back(j);
n -= __builtin_popcount(j);
}
cout << res.size() << "\n";
for (auto i : res) cout << i << " ";
cout << "\n";
}
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 | #include <bits/stdc++.h> using namespace std; int s[1000005]; int32_t main() { ios_base::sync_with_stdio(0); int n; cin >> n; for (int i = 1; i <= n; i++) { s[i] = s[i - 1] + __builtin_popcount(i); } vector<int> res; int j = n; while (n > 0) { while (s[j - 1] >= n) j--; res.push_back(j); n -= __builtin_popcount(j); } cout << res.size() << "\n"; for (auto i : res) cout << i << " "; cout << "\n"; } |
English