#include <cstdio>
int main ()
{
unsigned n;
scanf ("%u", &n);
int b = 0;
int p = 0;
int w = 0;
for (unsigned m=n; m>0; m/=2)
{
b ++;
p += m%2;
w += b>1? 2: 1;
}
w += p;
printf ("%i\n", w);
if (!n) return 0;
for (int i=0, j=0; i<b-1; i++) if ((n>>i)%2)
printf ("%i %i\n" , p+2*i+1 , ++j+1 );
printf ("%i %i\n" , n>1? w-2: w , n>1? w-1: -1 );
for (int i=1; i<b; i++)
printf ("%1$i %2$i\n%1$i %2$i\n", i>1? p+2*i-3: w, i>1? p+2*i-2: -1);
printf ("%i %i\n" , -1 , -1 );
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 | #include <cstdio> int main () { unsigned n; scanf ("%u", &n); int b = 0; int p = 0; int w = 0; for (unsigned m=n; m>0; m/=2) { b ++; p += m%2; w += b>1? 2: 1; } w += p; printf ("%i\n", w); if (!n) return 0; for (int i=0, j=0; i<b-1; i++) if ((n>>i)%2) printf ("%i %i\n" , p+2*i+1 , ++j+1 ); printf ("%i %i\n" , n>1? w-2: w , n>1? w-1: -1 ); for (int i=1; i<b; i++) printf ("%1$i %2$i\n%1$i %2$i\n", i>1? p+2*i-3: w, i>1? p+2*i-2: -1); printf ("%i %i\n" , -1 , -1 ); return 0; } |
English