#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<int> dp(n+3); dp[0] = 0; for(int i=1; i<n+3; i++){ dp[i] = dp[i-1] + __builtin_popcount(i); } vector<int> wynik; int cel = n; for(int i=n+2; i>=0; i--){ if(dp[i-1]<cel){ cel -= __builtin_popcount(i); wynik.push_back(i); } } cout<<wynik.size()<<endl; for(auto x : wynik)cout<<x<<" "; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<int> dp(n+3); dp[0] = 0; for(int i=1; i<n+3; i++){ dp[i] = dp[i-1] + __builtin_popcount(i); } vector<int> wynik; int cel = n; for(int i=n+2; i>=0; i--){ if(dp[i-1]<cel){ cel -= __builtin_popcount(i); wynik.push_back(i); } } cout<<wynik.size()<<endl; for(auto x : wynik)cout<<x<<" "; } |