#include <iostream> #include <vector> using namespace std; const int SIZE = 125000 + 1; int T[SIZE]; vector <int> V; void funkcja(int a) { if (a >= SIZE || T[a]) return; T[a] = T[a / 2] + (a % 2); funkcja(a * 2); funkcja(a * 2 + 1); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, w = 0, i = 0; cin>>n; funkcja(1); while (w < n) { i ++; w += T[i]; } w -= n; for (int j = i; j > 0; j --) { if (T[j] <= w) w -= T[j]; else V.push_back(j); } cout<<V.size()<<'\n'; for (auto i : V) 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 26 27 28 29 30 31 32 | #include <iostream> #include <vector> using namespace std; const int SIZE = 125000 + 1; int T[SIZE]; vector <int> V; void funkcja(int a) { if (a >= SIZE || T[a]) return; T[a] = T[a / 2] + (a % 2); funkcja(a * 2); funkcja(a * 2 + 1); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, w = 0, i = 0; cin>>n; funkcja(1); while (w < n) { i ++; w += T[i]; } w -= n; for (int j = i; j > 0; j --) { if (T[j] <= w) w -= T[j]; else V.push_back(j); } cout<<V.size()<<'\n'; for (auto i : V) cout<<i<<' '; cout<<'\n'; } |