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 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

There are no comments at the moment.