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