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