3n 1 數鏈問題

2021-04-13 21:54:02 字數 1162 閱讀 1310

在電腦科學上,有很多類問題是無法解決的,我們稱之為不可解決問題。然而,在很多情況下我們並不知道哪一類問題可以解決,哪一類問題不可以解決。現在我們就有乙個問題,問題如下:

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