#include<iostream>
using namespace std;
int ile(int liczba)
{
int i=0,tab[31];
int za=0;
while(liczba!=0)
{
tab[i++]=liczba%2;
liczba/=2;
}
for(int j=i-1;j>=0;j--){
if(tab[j]==1)++za;
}
return za;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin>>n;
int dl=0;
int dl2=0;
int za=0;
int tab[n];
int tab2[n];
int akt=1;
int kto;
while(za!=n){
if(za+ile(akt)<=n){
tab[dl]=akt;
++dl;
za=za+ile(akt);
}
else{
if(za-ile(akt-1)+ile(akt)==n){
tab[dl-1]=akt;
za=za-ile(akt-1)+ile(akt);
}
}
++akt;
}
cout<<dl<<"\n";
for(int i=dl-1;i>=0;--i){
cout<<tab[i]<<" ";
}
return 0;
}
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 | #include<iostream> using namespace std; int ile(int liczba) { int i=0,tab[31]; int za=0; while(liczba!=0) { tab[i++]=liczba%2; liczba/=2; } for(int j=i-1;j>=0;j--){ if(tab[j]==1)++za; } return za; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin>>n; int dl=0; int dl2=0; int za=0; int tab[n]; int tab2[n]; int akt=1; int kto; while(za!=n){ if(za+ile(akt)<=n){ tab[dl]=akt; ++dl; za=za+ile(akt); } else{ if(za-ile(akt-1)+ile(akt)==n){ tab[dl-1]=akt; za=za-ile(akt-1)+ile(akt); } } ++akt; } cout<<dl<<"\n"; for(int i=dl-1;i>=0;--i){ cout<<tab[i]<<" "; } return 0; } |
English