1. 程式人生 > >NOI題庫1.5.18角谷猜想

NOI題庫1.5.18角谷猜想

總時間限制: 1000ms 記憶體限制: 65536kB
描述
所謂角谷猜想,是指對於任意一個正整數,如果是奇數,則乘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

這題太簡單,直接模擬,但是注意有部分極端資料會超過int,比如說1000000001,它計算過程中出現了2250000004,所以要開long long

#include<iostream>
using namespace std;
int main()
{
    long long int n;
    cin>>n;
    if(n==1)
    {
        cout<<"End";
        return 0;
    }
    else
    {
        while(n!=1)
        {
            cout<<n;
            if
(n%2==1) { cout<<"*3+1="<<n*3+1; n=n*3+1; } else { cout<<"/2="<<n/2; n=n/2; } cout<<endl; } cout<<"End"; } return
0; }