#include <iostream> #include <algorithm> #include <vector> #define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define int long long using namespace std; int n; int res, bits, currentTune = 1; vector<int> tunes; void readInput() { boost; cin >> n; } void solve() { while (bits < n) { tunes.push_back(currentTune); bits += __builtin_popcount(currentTune); currentTune++; res++; } reverse(tunes.begin(), tunes.end()); for (auto it = tunes.begin(); it != tunes.end(); it++) { if (bits - __builtin_popcount(*it) == n) { tunes.erase(it); res--; break; } } } void printResult() { cout << res << endl; for (auto tune: tunes) { cout << tune << " "; } cout << endl; } int32_t main() { readInput(); solve(); printResult(); }
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 | #include <iostream> #include <algorithm> #include <vector> #define boost ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define int long long using namespace std; int n; int res, bits, currentTune = 1; vector<int> tunes; void readInput() { boost; cin >> n; } void solve() { while (bits < n) { tunes.push_back(currentTune); bits += __builtin_popcount(currentTune); currentTune++; res++; } reverse(tunes.begin(), tunes.end()); for (auto it = tunes.begin(); it != tunes.end(); it++) { if (bits - __builtin_popcount(*it) == n) { tunes.erase(it); res--; break; } } } void printResult() { cout << res << endl; for (auto tune: tunes) { cout << tune << " "; } cout << endl; } int32_t main() { readInput(); solve(); printResult(); } |