[Python_Training] s và t

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
C#, C++, Clang, Clang++, Cobol, D, Groovy, Haskell, Java, JS, Kotlin, Lua, Node JS, ObjectiveC, OCaml, Output, PHP, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 400 Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Có một tấm thẻ trên bàn, và bau đầu có một số \(s\) được viết trên nó, ở mỗi bước bạn có thể thực hiện \(1\) trong \(2\) phép toán sau:

  • Giả sử số ghi trên tấm thẻ là \(x\), thì thay nó bằng \(2 * x+1\)

  • Giả sử số ghi trên tấm thẻ là \(x\), thì thay nó bằng \(3 * x+1\)

Hỏi chúng ta cần thực hiện ít nhất bao nhiêu phép toán trên để thu được được số \(t\). Nếu không thể biến đổi \(s\) thành \(t\) in ra \(-1\).

Input

  • Dòng thứ nhất chứa số \(T(1\le T\le 30\)) - Thể hiện số testcase của bài toán

  • T dòng tiếp theo, mỗi dòng chứa hai số nguyên \(s,t(0\le s,t\le 10^6)\)

Output

  • Ứng với mỗi testcase, in ra đáp án thỏa mãn yêu cầu bài toán

Example

Test 1

Input
2
1 3
3 15
Output
1
2

Bình luận