Dãy số Collatz

Xem dạng PDF

Gửi bài giải

Điểm: 0,10
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1000M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++

Giả thuyết Collatz là một trong những bài toán chưa có lời giải nổi tiếng nhất trong toán học. Giả thuyết này áp dụng cho một dãy số được tạo ra như sau:

Bắt đầu với một số nguyên dương bất kỳ ~n~.

  • Nếu ~n~ là số chẵn, số tiếp theo là ~n / 2~.
  • Nếu ~n~ là số lẻ, số tiếp theo là ~3 * n + 1~.

Giả thuyết cho rằng dù bạn bắt đầu với số ~n~ nào, dãy số cuối cùng cũng sẽ luôn đạt đến số 1.

Ví dụ, bắt đầu với ~n = 6~, ta có dãy số: 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1. Quá trình này mất 8 bước.

Bạn hãy viết một chương trình để kiểm tra xem một số ~n~ cho trước cần bao nhiêu bước để đạt đến 1.

Định dạng đầu vào

Dòng đầu tiên chứa một số nguyên ~T~ (~1 \le T \le 1000~), là số lượng các số cần kiểm tra.

~T~ dòng tiếp theo, mỗi dòng chứa một số nguyên dương ~n~ (~1 \le n \le 1\,000\,000~).

Định dạng đầu ra

Đối với mỗi số nguyên ~n~, in ra số bước cần thiết để dãy số Collatz đạt đến 1.

Sample Input

2
6
3

Sample Output

8
7

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.