#include <iostream> #include <cmath> using namespace std; int tab[110][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int k; cin>>k; int index=0,koncowy_index=1; for(int i=1; i<=30; i++) { if(pow(2,i)<=k) { index=i; int pocz=((i-1)*2)+1; koncowy_index=pocz+2; tab[pocz][0]=pocz+1; tab[pocz][1]=pocz+2; tab[pocz+1][0]=pocz+2; } } k-=pow(2,index); tab[koncowy_index][0]=koncowy_index+1; koncowy_index++; for(int i=index-1; i>=0; i--) { if(pow(2,i)<=k) { k-=pow(2,i); tab[(i+1)*2][1]=koncowy_index; } } cout<<koncowy_index<<endl; for(int i=1; i<=koncowy_index; i++) { if(tab[i][0]==0) { cout<<"-1"<<" "; } else { cout<<tab[i][0]<<" "; } if(tab[i][1]==0) { cout<<"-1"<<endl; } else { cout<<tab[i][1]<<endl; } } 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 53 54 55 56 57 58 59 60 61 62 63 | #include <iostream> #include <cmath> using namespace std; int tab[110][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int k; cin>>k; int index=0,koncowy_index=1; for(int i=1; i<=30; i++) { if(pow(2,i)<=k) { index=i; int pocz=((i-1)*2)+1; koncowy_index=pocz+2; tab[pocz][0]=pocz+1; tab[pocz][1]=pocz+2; tab[pocz+1][0]=pocz+2; } } k-=pow(2,index); tab[koncowy_index][0]=koncowy_index+1; koncowy_index++; for(int i=index-1; i>=0; i--) { if(pow(2,i)<=k) { k-=pow(2,i); tab[(i+1)*2][1]=koncowy_index; } } cout<<koncowy_index<<endl; for(int i=1; i<=koncowy_index; i++) { if(tab[i][0]==0) { cout<<"-1"<<" "; } else { cout<<tab[i][0]<<" "; } if(tab[i][1]==0) { cout<<"-1"<<endl; } else { cout<<tab[i][1]<<endl; } } return 0; } |