Collatz are 𝑇 vectori, fiecare vector 𝑖 (1 ≤ i ≤ T) fiind format inițial din numerele naturale consecutive de la 𝑆i la 𝐷i. După părerea lui, un vector îngrijit are toate elementele egale cu 1. Deoarece lui Collatz îi plac vectorii îngrijiți, el își dorește ca toate elementele vectorilor să devină 1, 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
x, atunci valoarea lui devine2 • 𝑥 + 2.
Cerința
Pentru fiecare dintre cei T 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 T, cu semnificația din enunț, iar pe fiecare din următoarele T linii se află câte două numere 𝑆i și Di, separate prin câte un spațiu, cu semnificația din enunț, pentru
fiecare vector i.
Date de ieșire
Fișierul de ieșire collatz.out va conține T numere, fiecare pe câte o linie, reprezentând numărul minim cerut pentru fiecare dintre cei T vectori în ordine.
Restricții și precizări
1 ≤ T ≤ 1000, număr natural1 ≤ Si≤ Di≤ 1016și𝑆i,Disunt numere naturale, pentru orice1 ≤ i ≤ T- Pentru 63 de puncte,
Di≤ 1000 - Pentru 16 de puncte,
Di≤ 1.000.000 - Pentru 12 de puncte,
Di≤ 10.000.000 - Pentru 9 puncte, 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]. Este nevoie de o singură operație pentru a-l transforma pe [2] în [1].
Al doilea vector: Vectorul inițial este [4, 5]. O succesiune posibilă de 9 operații pentru a transforma vectorul în [1, 1] este următoarea:
[4, 5] → [4, 12]
[4, 12] → [4, 6]
[4, 6] → [4, 3]
[4, 3] → [4, 8]
[4, 8] → [4, 4]
[4, 4] → [4, 2]
[4, 2] → [4, 1]
[4, 1] → [2, 1]
[2, 1] → [1, 1]
Al treilea vector: Vectorul inițial este [1, 2, 3, 4]. O succesiune posibilă de 7 operații pentru a transforma vectorul în [1, 1, 1, 1] este:
[1, 2, 3, 4] → [1, 2, 3, 2]
[1, 2, 3, 2] → [1, 2, 3, 1]
[1, 2, 3, 1] → [1, 2, 8, 1]
[1, 2, 8, 1] → [1, 1, 8, 1]
[1, 1, 8, 1] → [1, 1, 4, 1]
[1, 1, 4, 1] → [1, 1, 2, 1]
[1, 1, 2, 1] → [1, 1, 1, 1]