sicily 1293 3n 1數鏈問題

2021-07-05 23:51:52 字數 894 閱讀 5886

time limit: 1 secs, memory limit: 32 mb

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

1.       輸入乙個正整數n;

2.       把n顯示出來;

3.       如果n=1則結束;

4.       如果n是奇數則n變為3n+1 ,否則n變為n/2;

5.       轉入第2步。

例如對於輸入的正整數22,應該有如下數列被顯示出來:

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

我們推測:對於任意乙個正整數,經過以上演算法最終會推到1。儘管這個演算法很簡單,但我們仍然無法確定我們的推斷是否正確。不過好在我們有計算機,我們驗證了對於小於1,000,000的正整數都滿足以上推斷。

對於給定的正整數n,我們把顯示出來的數的個數定義為n的鏈長,例如22的鏈長為16。

你的任務是編寫乙個程式,對於任意一對正整數i和j,給出i、j之間的最長鏈長,當然這個最長鏈長是由i、j之間的其中乙個正整數產生的。我們這裡的i、j之間即包括i也包括j。

輸入檔案只有一行,即為正整數i和j,i和j之間以乙個空格隔開。0 < i ≤ j < 10,000。

檔案只能有一行,即為i、j之間的最長鏈長。

1 10
20

理解清楚題意就知道其實是很簡單的求最大值問題,**如下:

#include using namespace std;

int main()

if(max

submit

3n 1 數鏈問題

在電腦科學上,有很多類問題是無法解決的,我們稱之為不可解決問題。然而,在很多情況下我們並不知道哪一類問題可以解決,哪一類問題不可以解決。現在我們就有乙個問題,問題如下 1 輸入乙個正整數n 2 把n顯示出來 3 如果n 1則結束 4 如果 n是奇數則n變為 3 n 1,否則n變為 n 2 5 轉入第...

java實現n個小孩圍圈數m退1問題(單鏈

n個人圍一圈報數,數到m的人退出,直到最後只剩乙個人。n個人圍一圈報數,數到m的人退出,直到最後只剩乙個人 public class countquit public static void main string args public static void startgrame start s...

南陽題目96 n 1位數

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 已知w是乙個大於10但不大於1000000的無符號整數,若w是n n 2 位的整數,則求出w的後n 1位的數。輸入 第一行為m,表示測試資料組數。接下來m行,每行包含乙個測試資料。輸出輸出m行,每行為對應行的n 1位數 忽略字首...