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