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