#include<bits/stdc++.h> using namespace std; int arr[121000]; vector<int> ans; int main(){ int n; cin >> n; int wsk1=0; int sum=0; while(sum<n){ wsk1++; sum+=__popcount(wsk1); arr[wsk1]=sum; } while(wsk1>=0){ if(arr[wsk1]<n){ ans.push_back(wsk1+1); n-=__popcount(wsk1+1); } wsk1--; } cout << ans.size() << "\n"; for(int i : ans){ cout << i << " "; } cout << "\n"; return 0; }
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 | #include<bits/stdc++.h> using namespace std; int arr[121000]; vector<int> ans; int main(){ int n; cin >> n; int wsk1=0; int sum=0; while(sum<n){ wsk1++; sum+=__popcount(wsk1); arr[wsk1]=sum; } while(wsk1>=0){ if(arr[wsk1]<n){ ans.push_back(wsk1+1); n-=__popcount(wsk1+1); } wsk1--; } cout << ans.size() << "\n"; for(int i : ans){ cout << i << " "; } cout << "\n"; return 0; } |