PS:啊啊啊我終于知道了啊,原來博客園支持馬克當,那這不就爽了嗎?!
傳送門
題目描述
給出一個正整數 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
嗯嗯,現在基本上就可以寫了,
———————————————————————————不怎么華麗的分割線———————————————————————————
首先我們看看,這道題是在Luogu的“陣列”題單里的!!!但我覺得這道題用陣列模擬太麻煩,還是用堆疊吧,畢竟堆疊對于反轉操作比較好用,
廢話不多說,上代碼:
#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記錄
(話說我好久沒有更了,各位請見諒哈~)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/38522.html
標籤:C++
上一篇:CreateEvent行程同步
下一篇:模板引數的“右值參考”是轉發參考
