collatz

Time limit: 0.2s Memory limit: 256MB Input: collatz.in Output: collatz.out

Collatz are TT vectori, fiecare vector ii (1iT1 \le i \le T) fiind format inițial din numerele naturale consecutive de la SiS_i la DiD_i. După părerea lui, un vector îngrijit are toate elementele egale cu 11. Deoarece lui Collatz îi plac vectorii îngrijiți, el își dorește ca toate elementele vectorilor să devină 11, așa că transformă pe rând vectorii, aplicând pentru fiecare un număr minim de operații. O operație constă din alegerea unui element al vectorului și apoi:

  • dacă elementul este par, atunci valoarea lui se înjumătățește;
  • dacă elementul este impar, având inițial valoarea xx, atunci valoarea lui devine 2x+22 \cdot x + 2.

Cerință

Pentru fiecare dintre cei TT vectori, determinați numărul minim de operații prin care poate deveni îngrijit.

Date de intrare

Fișierul de intrare collatz.in conține pe prima linie numărul TT, cu semnificația din enunț, iar pe fiecare din următoarele TT linii se află câte două numere SiS_i și DiD_i, separate prin câte un spațiu, cu semnificația din enunț pentru fiecare vector ii.

Date de ieșire

Fișierul de ieșire collatz.out conține TT numere, fiecare pe câte o linie, reprezentând numărul minim cerut pentru fiecare dintre cei TT vectori în ordine.

Restricții și precizări

  • 1T1 0001 \le T \le 1 \ 000, număr natural;
  • 1SiDi10161 \le S_i \le D_i \le 10^{16} și Si,DiS_i, D_i sunt numere naturale, pentru orice 1iT1 \le i \le T.
# Punctaj Restricții
1 63 Di1 000D_i \le 1 \ 000
2 16 Di106D_i \le 10^6
3 12 Di107D_i \le 10^7
4 9 fără alte restricții

Exemplu

collatz.in

3
2 2
4 5
1 4

collatz.out

1
9
7

Explicație

Primul vector: Vectorul inițial este [2][2]. Este nevoie de o singură operație pentru a-l transforma pe [2][2] în [1][1].

Al doilea vector: Vectorul inițial este [4,5][4, 5]. O succesiune posibilă de 99 operații pentru a transforma vectorul în [1,1][1, 1] este următoarea:

  • [4,5][4,12][4, 5] \rightarrow [4, 12]
  • [4,12][4,6][4, 12] \rightarrow [4, 6]
  • [4,6][4,3][4, 6] \rightarrow [4, 3]
  • [4,3][4,8][4, 3] \rightarrow [4, 8]
  • [4,8][4,4][4, 8] \rightarrow [4, 4]
  • [4,4][4,2][4, 4] \rightarrow [4, 2]
  • [4,2][4,1][4, 2] \rightarrow [4, 1]
  • [4,1][2,1][4, 1] \rightarrow [2, 1]
  • [2,1][1,1][2, 1] \rightarrow [1, 1]

Al treilea vector: vectorul inițial este [1,2,3,4][1, 2, 3, 4]. O succesiune posibilă de 77 operații pentru a transforma vectorul în [1,1,1,1][1, 1, 1, 1] este:

  • [1,2,3,4][1,2,3,2][1, 2, 3, 4] \rightarrow [1, 2, 3, 2]
  • [1,2,3,2][1,2,3,1][1, 2, 3, 2] \rightarrow [1, 2, 3, 1]
  • [1,2,3,1][1,2,8,1][1, 2, 3, 1] \rightarrow [1, 2, 8, 1]
  • [1,2,8,1][1,1,8,1][1, 2, 8, 1] \rightarrow [1, 1, 8, 1]
  • [1,1,8,1][1,1,4,1][1, 1, 8, 1] \rightarrow [1, 1, 4, 1]
  • [1,1,4,1][1,1,2,1][1, 1, 4, 1] \rightarrow [1, 1, 2, 1]
  • [1,1,2,1][1,1,1,1][1, 1, 2, 1] \rightarrow [1, 1, 1, 1].

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