ZeroJudge D712: The 3n + 1 problem
題目敘述 本題採EOF方式收資料,每筆資料有兩個1~1000000的正整數A和B。要求輸出A和B還有「 從A到B的3n+1 Problem的總Cycle次數最多的次數」。 3n+1: 如果N=1,return 1。 如果N是偶數,return N/2。 如果N是奇數,return 3N+1。 範例輸入 #1 1 10 100 200 201 210 900 1000 範例輸出 #1 1 10 20 100 200 125 201 210 89 900 1000 174 解題思路 本題可以用建立1到1000000的表來做,但是要跑1000000次的3N+1函式還是很耗時,可以發現當N可以被2整除時,他的3N+1函式回傳值就會是N/2的回傳值再加1,利用這點只需要判斷1到1000000中的奇數就好了。但是這樣子還是不夠快,所以除了將3N+1函式的回傳值進行建表,還需要進行A到B的最大值的線段數建立,最後再建立一個Query的函式將A到B的最大值進行計算,這樣子就不會TLE了。另外,測資中有可能A會大於B,這種情況就需要Swap(A, B),但是輸出的時候還是要按照原有的順序進行輸出,這點需注意。