題目描述
給出一個正整數 n,然後對這個數字一直進行下面的操作:如果這個數字是奇數,那麼將其乘 3 再加 1,否則除以 2。經過若干次迴圈後,最終都會回到 1。經過驗證很大的數字都可以按照這樣的方式比變成 1,所以被稱為“冰雹猜想”。例如當 n 是 20,變化的過程是 [20, 10, 5, 16, 8, 4, 2, 1]。根據給定的數字,驗證這個猜想,並從最後的 1 開始,倒序輸出整個變化序列。例如輸入20,輸出[1,2,4,8,16,5,10,20]。
#include<iostream>using namespace std;int fun(int n){ if(n%2==0){ n=n/2; } else{ n=n*3+1; } return n;}int main(){ int a[200]={0}; int n,num,m,count=0; cin>>n; num=n; for(int i=2;n!=1;i++){ m=fun(n); a[i]=m; count++; n=m; } a[1]=num; for(int i=count+1;i>=1;i--){ cout<<a[i]<<" "; } return 0; }