#include <bits/stdc++.h> using namespace std; int32_t a, last = 1; vector<int32_t> seq; int main() { scanf("%" SCNd32, &a); int32_t sum = 1; while (sum < a) { ++last; sum += __builtin_popcount(last); } for (; last != 0; --last) { if (sum - __builtin_popcount(last) < a) { seq.emplace_back(last); a -= __builtin_popcount(last); } sum -= __builtin_popcount(last); } printf("%zu\n", seq.size()); for (int32_t i = 0; i < seq.size(); ++i) printf(i == 0 ? "%" PRId32 : " %" PRId32, seq[i]); printf("\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 26 27 28 29 30 | #include <bits/stdc++.h> using namespace std; int32_t a, last = 1; vector<int32_t> seq; int main() { scanf("%" SCNd32, &a); int32_t sum = 1; while (sum < a) { ++last; sum += __builtin_popcount(last); } for (; last != 0; --last) { if (sum - __builtin_popcount(last) < a) { seq.emplace_back(last); a -= __builtin_popcount(last); } sum -= __builtin_popcount(last); } printf("%zu\n", seq.size()); for (int32_t i = 0; i < seq.size(); ++i) printf(i == 0 ? "%" PRId32 : " %" PRId32, seq[i]); printf("\n"); } |