Bài toán 3n + 1 (UVa 100)
View as PDF
Points:
10 (p)
Time limit:
2.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Xét thuật toán sau với một số nguyên dương n:
- Nhập
n - In
n - Nếu
n = 1thì DỪNG - Nếu
nlẻ thìn ← 3n + 1 - Ngược lại
n ← n / 2 - Quay lại bước 2
Với n = 22, dãy số được in ra là: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Với một số n cho trước, độ dài chu trình (cycle-length) là số lượng số được in ra tính cả số 1 cuối cùng. Ví dụ trên có độ dài chu trình bằng 16.
Nhiệm vụ của bạn: với mỗi cặp số nguyên dương i và j trong input, hãy xác định độ dài chu trình lớn nhất của mọi số nguyên n trong khoảng từ min(i, j) đến max(i, j) (bao gồm cả hai đầu), rồi in ra trên một dòng ba số: i j maxCycle.
Input Specification
Gồm nhiều dòng, mỗi dòng chứa một cặp số nguyên dương i và j.
Dữ liệu kết thúc bởi EOF.
Output Specification
Với mỗi dòng input, in ra trên đúng một dòng ba số: i, j (giữ nguyên thứ tự như khi đọc) và maxCycle, cách nhau bởi ít nhất một dấu cách.
Constraints
0 < i, j < 10 000- Không có phép toán nào gây tràn 32-bit.
Input Sample
1 10
100 200
201 210
900 1000
Output Sample
1 10 20
100 200 125
201 210 89
900 1000 174
Comments