#include <bits/stdc++.h>
using namespace std;
int moc[1000*130+1];
int main() {
int n,bit,poz;
cin>>n;
int suma[1000*130+1];
vector<int> wyn;
suma[0]=0;
int pot_2[21];
pot_2[0]=1;
for(int i=1;i<=20;i++){
pot_2[i]=pot_2[i-1]*2;
}
/*
for(int i=0;i<=20;i++){
cout<<pot_2[i]<<endl;
}
*/
for(int i=1;i<=1000*130;i++){
suma[i]=suma[i-1];
for(int j=0;j<=20;j++){
bit=i&pot_2[j];
//cout<<bit<<" ";
if(bit>0){
moc[i]+=1;
}
}
suma[i]+=moc[i];
//cout<<moc[i]<<" "<<suma[i]<<endl;
}
//cout<<suma[1000*130];
for(int i=1;i<=1000*130;i++){
if(suma[i]>=n){
poz=i;
break;
}
}
bit=suma[poz];
for(int i=poz;i>=1;i--){
if(bit-moc[i]<n){
wyn.push_back(i);
}else{
bit-=moc[i];
}
}
cout<<wyn.size()<<endl;
for(int i=0;i<wyn.size();i++){
cout<<wyn[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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <bits/stdc++.h> using namespace std; int moc[1000*130+1]; int main() { int n,bit,poz; cin>>n; int suma[1000*130+1]; vector<int> wyn; suma[0]=0; int pot_2[21]; pot_2[0]=1; for(int i=1;i<=20;i++){ pot_2[i]=pot_2[i-1]*2; } /* for(int i=0;i<=20;i++){ cout<<pot_2[i]<<endl; } */ for(int i=1;i<=1000*130;i++){ suma[i]=suma[i-1]; for(int j=0;j<=20;j++){ bit=i&pot_2[j]; //cout<<bit<<" "; if(bit>0){ moc[i]+=1; } } suma[i]+=moc[i]; //cout<<moc[i]<<" "<<suma[i]<<endl; } //cout<<suma[1000*130]; for(int i=1;i<=1000*130;i++){ if(suma[i]>=n){ poz=i; break; } } bit=suma[poz]; for(int i=poz;i>=1;i--){ if(bit-moc[i]<n){ wyn.push_back(i); }else{ bit-=moc[i]; } } cout<<wyn.size()<<endl; for(int i=0;i<wyn.size();i++){ cout<<wyn[i]<<" "; } } |
English