0.chu kỳ 3N+1


Submit solution

Points: 3 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Ta sẽ phân tích một thuật toán như sau:

1. Nhập N

2. in giá trị N
3.   if    n    = 1    then STOP
4.   if    n    is odd then n  <-  3n+1
5.   else n <- n/2
6. Goto 2

Với đầu vào 22, chuỗi số liệu sau đây sẽ được in

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Có giả định rằng thuật toán ở trên sẽ dừng (khi 1 được in) với bất kỳ giá trị nguyên nào ở đầu vào. Mặc dù tính đơn giản của thuật toán, nhưng không rõ liệu giả thuyết này có đúng hay không. Nó đã được xác minh cho tất cả các số nguyên 0<N<1000 và lớn hơn.

Với một đầu và N, có thể xác định số lượng các số được in ra (bao gồm cả số 1). Giá trị này được gọi là chiều dài chu kỳ (cycle-length) của N. Trong ví dụ trên, chiều dài chu kỳ của 22 là 16.

Đối với bất kỳ hai số ij, bạn cần xác định chiều dài chu kỳ tối đa là số các số nằm trong khoảng i đến j (bao gồm cả ij)

Số liệu đầu vào sẽ bao gồm một loạt các cặp số nguyên i và j, Mỗi cặp số nguyên trên mỗi dòng. Tất cả số nguyên Sẽ nhỏ hơn 10^6 và lớn hơn 0. Cuối cùng của bộ số liệu là 2 số 0 0.

Hãy xác định chu kỳ tối đa của chúng. Bạn có thể giả định rằng không bị tràn số nguyên 32-bit. Hãy in ra cặp số nguyên đó và chu kỳ chu kỳ tối đa của chúng.Ba số này phải được cách nhau bởi một dấu cách
Số liệu phải được in theo theo cùng thứ tự mà chúng xuất hiện trong đầu vào.

VÍ DỤ

INPUT

1 10
100 200
201 210
900 1000
0 0

Output

1 10 20
100 200 125
201 210 89
900 1000 174

Comments

There are no comments at the moment.