在電腦科學上,有很多類問題是無法解決的,我們稱之為不可解決問題。然而,在很多情況下我們並不知道哪一類問題可以解決,哪一類問題不可以解決。現在我們就有乙個問題,問題如下:
1、輸入乙個正整數n;
2、把n顯示出來;
3、如果n=
1則結束;
4、如果
n是奇數則n變為
3×n+
1,否則n變為
n/2;
5、轉入第二步;
例如對於輸入的正整數
22,應該有如下數列被顯示出來:22、
11、34、
17、52、
26、13、
40、20、
10、5、
16、8、
4、2、
1 我們推測:對於任意乙個正整數,經過以上演算法最終推到
1。儘管這個演算法很簡單,但我們仍然無法確定我們的推斷是否正確。不過好在我們有計算機,我們驗證了對於小於
1000000
的正整數都滿足以上推斷。
對於給定的正整數
n,我們把顯示出來的數定義為
n的鏈長,例如
22的鏈長為16。
你的任務是編寫乙個程式,對於任意一對正整數i和
j,給出i和
j之間的最長鏈長,當然這個鏈長是由i和
j之間的其中乙個正整數產生的。我們這裡的i和
j之間既包括
i也包括j。
輸入輸出樣例:
****** input
output for the input
1 10
8 8100 200
201 210204
12589
解:本題沒什麼特殊技巧,最簡單的就是用窮舉法乙個個比較。
**:
#include
<
stdio.h
>
#include
<
string
.h>
#include
<
stdlib.h
>
intlink3(
intdata)
return
count;
}void
main()
printf(
"%d
",max);}}
3n 1數列問題
time limit 1000ms memory limit 65536k 有一天小標遇到了經典的3n 1數鏈問題,他想知道3n 1數鏈的前k個數是多少。下面小標來給你介紹一下3n 1數鏈是什麼,給定乙個數n,如果n為偶數,那麼下乙個數n1 n 2 否則n1 3 n 1 如果n1為偶數,那麼下乙個數...
3n 1數列問題
problem description 有一天小標遇到了經典的3n 1數鏈問題,他想知道3n 1數鏈的前k個數是多少。下面小標來給你介紹一下3n 1數鏈是什麼,給定乙個數n,如果n為偶數,那麼下乙個數n1 n 2 否則n1 3 n 1 如果n1為偶數,那麼下乙個數n2 n1 2 否則n2 3 n1 ...
3n 1數列問題
time limit 1000ms memory limit 65536kb problem description 有一天小標遇到了經典的3n 1數鏈問題,他想知道3n 1數鏈的前k個數是多少。下面小標來給你介紹一下3n 1數鏈是什麼,給定乙個數n,如果n為偶數,那麼下乙個數n1 n 2 否則n1...