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