回分類題庫
d212: 2011 SIG WINTER WarmUp B
出處:

Difficulity : 4
Accepted : 48 Times | Submit :220 Times | Clicks : 1792
Accepted : 37 Users | Submit : 63 Users | Accepted rate : 59%
Time Limit :29999 ms | Memory Limit : 64000 KBytes
題目加入時間 : 2011-02-18 02:11

Content :

Consider the following algorithm:   
1. input n  
2. print n  
3. if n = 1 then STOP  
4. if n is odd then n = 3*n + 1  
5. else n/2  
6. GOTO 2  
例如輸入 22, 得到的數列: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1   
據推測此演算法對任何整數而言會終止 (當列印出 1 的時候)。
雖然此演算法很簡單,但以上的推測是否真實卻無法知道。
然而對所有的n ( 0 < n < 1,000,000 )來說,以上的推測已經被驗證是正確的。  
給一個輸入 n ,透過以上的演算法我們可以得到一個數列(1作為結尾)。
此數列的長度稱為n的cycle-length。上面提到的例子, 22 的 cycle length為 16.  
 問題來了:對任2個整數i,j我們想要知道介於i,j(包含i,j)之間的數所產生的數列中最大的 cycle length 是多少。 

Input :

輸入可能包含了好幾列測試資料,每一列有一對整數資料 i,j 。 0< i,j < 1,000,000 

Output :

對每一對輸入 i , j 你應該要輸出  i, j 和介於 i, j 之間的數所產生的數列中最大的 cycle length。

Sample Input :

1 10
10 1
100 200
201 210
900 1000

Sample Output :

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

Hint :


  

Author :


  Solve it!   Status Forum (0)

C++
C
JAVA
29520. henryokc (52 ms , 4274KB)
33084. nthuskate (60 ms , 618KB)
49450. CC501 (138 ms , 12516KB)
39023. johnny (152 ms , 218KB)
64940. lw310659 (162 ms , 15990KB)
30776. ej04xjp6 (42 ms , 4182KB)
36582. MK (50 ms , 4148KB)
36581. MK (50 ms , 4142KB)
81441. s06i066 (62 ms , 4124KB)
36579. MK (64 ms , 4154KB)
52898. nwgs524513cja (442 ms , 6084KB)
50454. nwgs524513cja (442 ms , 6586KB)
50452. nwgs524513cja (478 ms , 23928KB)
52897. nwgs524513cja (682 ms , 24638KB)

執行時間會受很多因素影響因此僅供參考,主機等級請看這裡