#include <bits/stdc++.h>
using namespace std;
constexpr int maxN = 1e6+7;
int n,cnt[maxN];
vector<int>ans;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
cnt[i] = cnt[i-1] + __builtin_popcount(i);
int j = n, l = n;
while(l){
while(cnt[j-1] >= l)
j--;
ans.push_back(j);
l -= __builtin_popcount(j);
}
cout<<ans.size()<<"\n";
for(int x:ans)
cout<<x<<' ';
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 | #include <bits/stdc++.h> using namespace std; constexpr int maxN = 1e6+7; int n,cnt[maxN]; vector<int>ans; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; for(int i=1;i<=n;i++) cnt[i] = cnt[i-1] + __builtin_popcount(i); int j = n, l = n; while(l){ while(cnt[j-1] >= l) j--; ans.push_back(j); l -= __builtin_popcount(j); } cout<<ans.size()<<"\n"; for(int x:ans) cout<<x<<' '; cout<<"\n"; } |
English