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