基礎練習:1086:角谷猜想
阿新 • • 發佈:2018-12-17
1086:角谷猜想
【題目描述】
謂角谷猜想,是指對於任意一個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重複處理,最終總能夠得到1。如,假定初始整數為5,計算過程分別為16、8、4、2、1。程式要求輸入一個整數,將經過處理得到1的過程輸出來。
【輸入】
一個正整數N(N ≤ 2,000,000)。
【輸出】
從輸入整數到1的步驟,每一步為一行,每一部中描述計算過程。最後一行輸出"End"。如果輸入為1,直接輸出"End"。
【輸入樣例】
5
【輸出樣例】
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
#include<iostream> using namespace std; int main() { int N,sum; cin>>N; sum=N; int i=0; while(sum>1) {i++; if(sum%2==0) {sum/=2; cout<<sum*2<<"/"<<"2"<<"="<<sum<<endl;} else if(sum%2!=0) //注意if和else if的區別 {sum=sum*3+1; cout<<(sum-1)/3<<"*"<<"3"<<"+"<<"1"<<"="<<sum<<endl;} } if(sum==1) cout<<"End"<<endl; return 0; }
if…if與if…else if區別:
if…if是對每一個if進行判斷,互相之間不會影響;
else…if是不滿足if中的條件的時候,才會去執行else if 。如果if中的條件已經滿足了,就不會去判斷else if中的條件了