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