【題解】CPE一顆星選集第4題:00100 – The 3n + 1 problem

題目簡述:把 i (a ≤ i ≤ b) 丟入 function,求所有 i 產生的遞迴層數的最大值。
題目 / ZJ

陷阱:題目給的 a 不一定小於 b。
解法:for(int i=min(a, b); i<=max(a, b); i++)。

#include <iostream>
using namespace std;
int cnt;
void f(int n){
    cnt++;
    if(n == 1) return;
    if(n % 2 != 0) f(3*n+1);
    else f(n/2);
}
int main(){
    ios::sync_with_stdio(0), cin.tie(0);
    int a, b;
    while(cin >> a >> b){
        int Max = 0;
        for(int i=min(a,b); i<=max(a,b); i++){
            cnt = 0;
            f(i);
            Max = max(Max, cnt);
        }
        cout << a << ' ' << b << ' ' << Max << '\n';
    }
}
👉 回到:【CPE大學程式能力檢定】目錄
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *