#include<bits/stdc++.h> using namespace std; const int SIZE = 1e6+1; int dp[SIZE]; int ile[SIZE]; int dp2[SIZE]; int main() { cout.tie(0); cin.tie(0); ios::sync_with_stdio(0); int n; cin>>n; for(int i=n; i>0; i--) { for(auto j: bitset<20>(i).to_string()) { if(j=='1') dp[i]++; // cout<<j<<' '; } // cout<<'\n'; } int found = 0, foundVal; for(int i=1; i<=n; i++) { dp2[i] = dp2[i-1] + dp[i]; // cout<<dp2[i]<<' '; if(dp2[i]>=n && !found) { found = i; foundVal = dp2[i]; } } int zepsute = -1; for(int i=found-1; i>0; i--) { // cout<<dp[i]<<'\n'; if(dp[i] == abs(n-foundVal)) { zepsute = i; break; } } vector<int> xd; for(int i=found; i>0; i--) { if(i!=zepsute) xd.push_back(i); } cout<<xd.size()<<'\n'; for(auto i: xd) cout<<i<<' '; }
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 32 33 34 35 36 37 38 39 40 41 42 43 | #include<bits/stdc++.h> using namespace std; const int SIZE = 1e6+1; int dp[SIZE]; int ile[SIZE]; int dp2[SIZE]; int main() { cout.tie(0); cin.tie(0); ios::sync_with_stdio(0); int n; cin>>n; for(int i=n; i>0; i--) { for(auto j: bitset<20>(i).to_string()) { if(j=='1') dp[i]++; // cout<<j<<' '; } // cout<<'\n'; } int found = 0, foundVal; for(int i=1; i<=n; i++) { dp2[i] = dp2[i-1] + dp[i]; // cout<<dp2[i]<<' '; if(dp2[i]>=n && !found) { found = i; foundVal = dp2[i]; } } int zepsute = -1; for(int i=found-1; i>0; i--) { // cout<<dp[i]<<'\n'; if(dp[i] == abs(n-foundVal)) { zepsute = i; break; } } vector<int> xd; for(int i=found; i>0; i--) { if(i!=zepsute) xd.push_back(i); } cout<<xd.size()<<'\n'; for(auto i: xd) cout<<i<<' '; } |