Biến đổi số (Dãy Collatz)

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
Python, Scratch

An có một số nguyên dương ~n~, bạn ấy vừa nghĩ ra một thuật toán mới để biến đổi số về giá trị ~1~. Một phép biến đổi số được thực hiện như sau:

  • ~n = n/2~ nếu ~n~ là số chẵn.
  • ~n = 3n + 1~ nếu ~n~ là số lẻ.

Phép biến đổi được lặp lại đến khi ~n = 1~.

Ví dụ: ~n = 13~: các phép biến đổi lần lượt được thực hiện như sau:

$$~13~  →  ~40~  →  ~20~  →  ~10~  →  ~5~  →  ~16~  →  ~8~  →  ~4~  →  ~2~  →  ~1~$$

An muốn biết với số nguyên dương ~n~ cho trước, cần thực hiện bao nhiêu bước biến đổi để nhận giá trị bằng ~1~. Em hãy lập trình trả lời giúp An câu hỏi của bạn ấy.

Input
  • Gồm 1 dòng chứa số nguyên ~N~ ~(1 \le N \le 10^{6})~
Output
  • Một dòng duy nhất chứa kết quả tìm được.
Sample Input
13
Sample Output
9

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.