Loading Now

countChangeNumbers

Hải vừa nghĩ ra một phép biến đổi số, cụ thể như sau:

Với số tự nhiên n nếu:

  • n là số chẵn thì biến đổi n thành n/2.
  • n là số lẽ thì biến đổi n thành 3*n+1.

Hiện tại Hải đang có hai số tự nhiên nk, Hải muốn biết rằng những số nào sau khi biến đổi k lần liên tiếp thì biến đổi thành số n.

Kết quả là danh sách các số đó đã được sắp xếp tăng dần.

Ví dụ:

  • Với n = 10, k = 3, thì countChangeNumbers(n,k) = [12,13,80].
    Giải thích:
    • 12 biến đổi 3 lần: 12->6->3->10.
    • 13 biến đổi 3 lần: 13->40->20->10.
    • 80 biến đổi 3 lần: 80->40->20->10.
  • Với n = 5, k = 2, thì countChangeNumbers(n,k) = [3,20].
    Giải thích:
    • 3 biến đổi 2 lần: 3->10->5.
    • 20 biến đổi 2 lần: 20->10->5.

Đầu vào/Đầu ra:

  • [Thời gian chạy] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript.

  • [Đầu vào] Integer n
    1 ≤ n ≤ 106.

  • [Đầu vào] Integer k
    0 ≤ k ≤ 25.

  • [Đầu ra] Arrays: integer
    Danh sách kết quả đã được sắp xếp tăng dần.

Post Comment

Contact