PAT乙級1001. 害死人不償命的(3n+1)猜想 (15) C++
阿新 • • 發佈:2019-01-08
這道題目並不是很難,解題思路如下:
首先根據計算方法,把每一次的處理分為兩種情況(奇數、偶數),然後因為要得出次數,所以很自然需要計數器和迴圈。臨界條件比較清晰,題目中說:簡單地數一下,需要多少步才能得到n=1?所以臨界條件就是n是否等於一,這裡程式設計就是n!=1。我的程式碼如下:
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int n;
cin>>n;
int count=0;
while(n!=1)//臨界條件
{
if (n%2==0)//如果它是偶數,那麼砍掉一半
{
n/=2;
}else//如果它是奇數,則……
{
n=(3*n+1)/2;
}
count++;//記錄次數
}
cout<<count;
system("pause");
return 0;
}
之所以寫一下這個題目,是為了紀念我第一次使用CodeLite寫演算法題。之後要慢慢熟悉這個給力的IDE啦,哈哈,好像不僅僅可以編寫C、C++還可以編寫PHP和node.js呢。最後依然祝願大家程式設計快樂,一切順利!