P5727 冰雹猜測

PS:啊啊啊我終於知道了啊,原來博客園支持馬克當,那這不就爽了嗎?!
傳送門c++

題目描述
給出一個正整數 n(n\le 100)n(n≤100),而後對這個數字一直進行下面的操做:若是這個數字是奇數,那麼將其乘 3 再加 1,不然除以 2。通過若干次循環後,最終都會回到 1。通過驗證很大的數字(7 * 10 ^ 11)均可以按照這樣的方式比變成 1,因此被稱爲「冰雹猜測」。例如當 nn 是 20,變化的過程是 [20, 10, 5, 16, 8, 4, 2, 1]。

根據給定的數字,驗證這個猜測,並從最後的 1 開始,倒序輸出整個變化序列。

輸入格式
無

輸出格式
無

輸入輸出樣例
輸入 #1
20
輸出 #1
1 2 4 8 16 5 10 20

嗯嗯,如今基本上就能夠寫了。數組

———————————————————————————不怎麼華麗的分割線———————————————————————————spa

首先咱們看看,這道題是在Luogu的「數組」題單裏的!!!但我以爲這道題用數組模擬太麻煩,仍是用吧。畢竟棧對於反轉操做比較好用。
廢話很少說,上代碼:code

#include <bits/stdc++.h>
using namespace std;
int main (){
    int n;
    cin >> n;
    stack <int> s;
    s.push (n);
    while (s.top () != 1){
        if (s.top () % 2 == 1)s.push (s.top () * 3 + 1);
        else s.push (s.top () / 2);
    }
    while (s.empty () == 0){
        cout << s.top () << " ";
        s.pop ();
    }
    return 0;
}

AC記錄
(話說我很久沒有更了,各位請見諒哈~)ci

相關文章
相關標籤/搜索