藍橋杯 冰雹數

2021-08-17 08:59:18 字數 969 閱讀 4640

冰雹數

任意給定乙個正整數n,

如果是偶數,執行: n / 2

如果是奇數,執行: n * 3 + 1

生成的新的數字再執行同樣的動作,迴圈往復。

通過觀察發現,這個數字會一會兒上公升到很高,

一會兒又降落下來。

就這樣起起落落的,但最終必會落到「1」

這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。

比如n=9

9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

可以看到,n=9的時候,這個「小冰雹」最高衝到了52這個高度。

輸入格式:

乙個正整數n(n<1000000)

輸出格式:

乙個正整數,表示不大於n的數字,經過冰雹數變換過程中,最高衝到了多少。

例如,輸入:

10程式應該輸出:

52再例如,輸入:

100程式應該輸出:

9232

資源約定:

峰值記憶體消耗 < 256m

cpu消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

輸入n,求的是n-1中的冰雹數變換過程中,最高衝到了多少。

#includeint main()

else

} }printf("%lld",max);

return 0;

}

可以對i>0;優化,例如i>n/2;

藍橋杯真題 冰雹數

任意給定乙個正整數n,如果是偶數,執行 n 2 如果是奇數,執行 n 3 1 生成的新的數字再執行同樣的動作,迴圈往復。通過觀察發現,這個數字會一會兒上公升到很高,一會兒又降落下來。就這樣起起落落的,但最終必會落到 1 這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。比如n 9 9,28,14,7,22...

藍橋杯 2016初賽 冰雹數

任意給定乙個正整數n,如果是偶數,執行 n 2 如果是奇數,執行 n 3 1 生成的新的數字再執行同樣的動作,迴圈往復。通過觀察發現,這個數字會一會兒上公升到很高,一會兒又降落下來。就這樣起起落落的,但最終必會落到 1 這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。比如n 9 9,28,14,7,22...

藍橋杯2016初賽 冰雹數 模擬

題目描述 任意給定乙個正整數n,如果是偶數,執行 n 2 如果是奇數,執行 n 3 1 生成的新的數字再執行同樣的動作,迴圈往復。通過觀察發現,這個數字會一會兒上公升到很高,一會兒又降落下來。就這樣起起落落的,但最終必會落到 1 這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。比如n 9 9,28,14...