operatii

Time limit: 0.1s Memory limit: 4MB Input: operatii.in Output: operatii.out

Notăm cu cc şi rr câtul şi respectiv restul împărţirii unui numar nrnr la 2k2^k, unde kk este un număr natural nenul. Asupra numărului putem efectua succesiv următoarele operaţii:

O1(nr,k)O_1(nr, k) reprezintă transformarea numărului nrnr în numărul 2k(2c+1)+r2^k \cdot (2 \cdot c+1)+r pentru orice rest rr

O2(nr,k)O_2(nr, k) reprezintă transformarea numărului nrnr în numărul 2k1c+r2^{k-1} \cdot c+r doar dacă r<2k1r < 2^{k-1}

Cerință

Se dau mm şi nn două numere naturale nenule.

Efectuaţi asupra numerelor mm şi nn operaţii succesive, O1O_1 sau O2O_2, pentru valori alese ale lui kk, astfel încât după un număr finit de operaţii cele două numere să devină egale, iar valoarea astfel obţinută să fie minimă.

Date de intrare

Fişierul de intrare operatii.out conţine pe o singură linie: m nm \ n două numere naturale nenule, separate printr-un spaţiu, reprezentând cel două numere date.

Date de ieșire

Fişierul de ieşire operatii.out conţine pe cele i+j+3i+j+3 linii următoarele:

  • pe prima linie, numărul natural nenul nminnmin, reprezentând valoarea minimă obţinută din mm şi nn prin aplicarea unor succesiuni de operaţii O1O_1 sau O2O_2;
  • pe a doua linie, numărul operaţiilor efectuate asupra primului număr mm;
  • pe următoarele ii linii:
    • perechi de numere reprezentând operaţia (11 sau 22) şi respectiv valoarea lui kk pentru operaţia respectivă, separate printr-un spaţiu;
    • numărul operaţiilor efectuate asupra celui de al doilea număr nn, pe linia i+2i+2.
  • pe următoarele jj linii:
    • perechi de numere reprezentând operaţia (11 sau 22) şi respectiv valoarea lui kk pentru operaţia respectivă, separate printr-un spaţiu.

Restricții și precizări

  • 1<m,n2 000 000 0001 < m,n \leq 2 \ 000 \ 000 \ 000 (două miliarde)

Exemplu

operatii.in

11 45

operatii.out

15
2
2 3
1 2
2
2 2
2 4

Log in or sign up to be able to send submissions!