Bài toán 3n + 1 (UVa 100)

View as PDF



Author:
Problem type
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:

  1. Nhập n
  2. In n
  3. Nếu n = 1 thì DỪNG
  4. Nếu n lẻ thì n ← 3n + 1
  5. Ngược lại n ← n / 2
  6. 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 ij 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 ij.
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

There are no comments at the moment.