題目連結: https://zerojudge.tw/ShowProblem?problemid=c039

# 解題思路

從 a 到 b 之間的所有長度都算出來,只記錄最大值就好
(可以運用函式,讓程式碼變得更單純)

# 程式碼

#include <iostream>
using namespace std;
int cl(int n)
{
    int i=1;
    while (n!=1){
        if (n%2==1) n=3*n+1;
        else  n=n/2;
        i++;
    }
    return i;
}
int main(){
    int a,b,c,d;
    while(cin >> a >> b)
    {
        int ans=0;
        for(int i=min(a,b);i<=max(a,b);i++)
            ans=max(ans,cl(i));
        cout << a<< " " << b << " " << ans <<endl;
    }
    return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay