【CPE一顆星選集】UVA100 – The 3n + 1 problem【C++】

C++

問題文

問題文はこちらにあります。

Online Judge
Online Judge

問題は一定のアルゴリズムに沿って計算して、1になるまで繰り返す。
その計算結果の中から最大ループ数を表示させるのが答えです。

サンプルコード

cpe/一顆星/uva100/01.cpp at main · mintson0517/cpe
Contribute to mintson0517/cpe development by creating an account on GitHub.

コードの解説

while (cin >> a >> b) {
        int max_count = 0;
        
        for (int i = min(a, b); i <= max(a, b); i++) {
            int num = i;
            int count = 1;
            
            while (num != 1) {
                if (num % 2 == 1) {
                    num = 3 * num + 1;
                } else {
                    num = num / 2;
                }
                count++;
            }
            max_count = max(max_count, count);
        }
        cout << a << " " << b << " " << max_count << endl;
    }

今回のアルゴリズム計算は奇数の場合は3n+1,偶数の場合はn/2をします。
1になるまでのループ回数をCountで数えて、max_countの所で現段階の最大と今のループと比べます。
最大であればmax_countに変えます。

最後にa, b, max_countを表示して終わります。

タイトルとURLをコピーしました