1. 程式人生 > >第七屆藍橋杯—冰雹數

第七屆藍橋杯—冰雹數

冰雹數

任意給定一個正整數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 , 不能通過工程設定而省略常用標頭檔案。

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

#include<stdio.h>
#include<iostream>
using namespace std;

int  fun(int n,int max) 
{
    if(n==1)
    {
        return max;
    }
    else{
        if(n%2==0)
        {
            n/=2;
            if(n>max)
            max=n;
            return fun(n,max); 
        }else{
            n=n*3
+1; if(n>max) max=n; return fun(n,max); } } } int main() {int max; int N; int t=1; cin>>N; for(int i=1;i<N;i++) { max=fun(i,i); if(t<max) t=max; } cout<<t<<endl; return 0; }

相關推薦

藍橋冰雹

冰雹數 任意給定一個正整數N, 如果是偶數,執行: N / 2 如果是奇數,執行: N * 3 + 1 生成的新的數字再執行同樣的動作,迴圈往復。 通過觀察發現,這個數字會一會兒上升到很高, 一會兒又降落下來。 就這樣起起落落的,但最終必會落到“1

藍橋冰雹

題目:冰雹數 任意給定一個正整數N, 如果是偶數,執行: N / 2 如果是奇數,執行: N * 3 + 1 生成的新的數字再執行同樣的動作,迴圈往復。 通過觀察發現,這個數字會一會兒上升到很高, 一會兒又降落下來。 就這樣起起落落的,但最終必會落到“1” 這有點像小冰雹粒

【DFS填】(2016)藍橋省賽 C/C++ A組 題解(三題)

第三題 題目     如圖,如下的10個格子,填入0~9的數字。要求:連續的兩個數字不能相鄰。  (左右、上下、對角都算相鄰)一共有多少種可能的填數方案?  請填寫表示方案數目的整數。思路分析     

藍橋—報紙頁

報紙頁數 X星球日報和我們地球的城市早報是一樣的, 都是一些單獨的紙張疊在一起而已。每張紙印有4版。 比如,某張報紙包含的4頁是:5,6,11,12, 可以確定它應該是最上邊的第2張報紙。 我們在太空中撿到了一張X星球的報紙,4個頁碼分別是: 112

2016年 藍橋 全國總決賽B題(完全平方)

題目意思就是: 給你0,1,2,3,4,5,6,7,8,9十個數字,要你選出任意一個或幾個組合在一起成為完全平方數,每個數字都必須選且只能選一次,求可能的方案。 比如有其中幾種符合題意的情況: 0 16 25 73984 0 1 625 73984 0

藍橋 方格填 dfs

code ret 圖片 藍橋 可能 div include [] names 如下的10個格子 填入0~9的數字。要求:連續的兩個數字不能相鄰。 (左右、上下、對角都算相鄰) 一共有多少種可能的填數方案? 請填寫表示方案數目的整數。 註意:你提交的應該是一個整數,不要填寫

算法筆記_212:藍橋軟件類決賽真題(Java語言B組)

技術 emp 字符串表 求解 如果 過去 系統 多少 ann 目錄 1 憤怒小鳥 2 反幻方 3 打靶 4 路徑之謎 5 堿基 6 圓圈舞 前言:以下代碼僅供參考,若有錯誤歡迎指正哦~ 1 憤怒小鳥 憤怒小鳥 X星球憤怒的小鳥喜歡撞火車! 一根平直的鐵

藍橋大賽個人賽省賽(軟件類)B組

string 問題 pan 圖1 http this 藍橋杯 不同 ogr 3.湊算式 B DEFA + --- + ------- = 10 C GHI (如果顯示有問題,可以參見【圖1.jpg】) 這個算式中A~I代表1~

藍橋省賽C/C++B組賽題及答案

part 實現 void 整數 三層 在一起 idt mage 算法; 第一題 【題目】 煤球數目 有一堆煤球,堆成三角棱錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤

藍橋 Java 煤球數目問題

煤球數目 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), … 如果一共有100層,共有多少個煤球? 請填表示煤球總數目的數字。 注意:你提交的應該是一個整數,不要填寫

藍橋省賽 Java 平方怪圈

平方怪圈 如果把一個正整數的每一位都平方後再求和,得到一個新的正整數。 對新產生的正整數再做同樣的處理。 如此一來,你會發現,不管開始取的是什麼數字, 最終如果不是落入1,就是落入同一個迴圈圈。 請寫出這個迴圈圈中最大的那個數字。 請填寫該最大數字。 注意:你提

藍橋 湊算式 C語言 B組三題

湊算式      B      DEF A + --- + ------- = 10      C      GHI       (如果顯示有問題,可以參見【圖1.jpg】)             這個算式中A~I代表1~9的數字,不同的字母代表不同的數字。 比如: 6

藍橋大賽個人賽省賽(軟體類)A組三題

方格填數 如下的10個格子 ±-±-±-+ | | | | ±-±-±-±-+ | | | | | ±-±-±-±-+ | | | | ±-±-±-+ (如果顯示有問題,也可以參看【圖1.jpg】) 填入0~9的數字。要求:連續的兩個數字不能相鄰。 (左右、上下、對角都算相鄰) 一共有多少種

藍橋大賽個人賽省賽(軟體類)A組第二題

生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭。 請問,他從多少歲開始過生日party的? 請填寫他開始過生日party的年齡數。 程式碼: #include <iostream> using

藍橋大賽個人賽省賽(軟體類)A組第一題

某君新認識一網友。 當問及年齡時,他的網友說: “我的年齡是個2位數,我比兒子大27歲, 如果把我的年齡的兩位數字交換位置,剛好就是我兒子的年齡” 請你計算:網友的年齡一共有多少種可能情況? 程式碼: #include <iostream> using namespa

藍橋---分小組

分小組 9名運動員參加比賽,需要分3組進行預賽。 有哪些分組的方案呢? 我們標記運動員為 A,B,C,... I 下面的程式列出了所有的分組方法。 該程式的正常輸出為: ABC DEF GHI ABC DEG FHI ABC DEH FGI

藍橋---湊算式

湊算式      B      DEF A + --- + ------- = 10      C      GHI     &nb

藍橋---生日蠟燭

生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭。 請問,他從多少歲開始過生日party的? 請填寫他開始過生日party的年齡數。 注意:你提交的應該是一個整

藍橋---煤球數目

煤球數目 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), .... 如果一共有100層,共有多少個煤球? 請填表示煤球總數目的數字。 注意:你提交

藍橋大賽個人賽省賽C++ A組 題解+原題 (填空題)

#include <stdio.h> void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } int partition(int a[], int p, int r) { int i = p;