これはインタビューの質問で、Project Euler Problem 14に関連しているようです。
コラッツ予想によると、次のようにすると
If n is even, replace n by n/2.
If n is odd, replace n by 3n+1.
最終的には 1 になります。
例えば、5 -> 16 -> 8 -> 4 -> 2 -> 1
予想が正しいと仮定すると、各数値には連鎖長があります。つまり、1 になるまでに必要なステップ数です (1 の連鎖長は 0 です)。
ここで、問題に自然数 n、m、および自然数 k が与えられ、1 と n の間のすべての数を見つけるアルゴリズムを与えます。これらの数の連鎖の長さは <= k です。また、これらの数字のチェーンには 1 から m までの数字のみを含める必要があるという制限もあります (つまり、m を超えることはできません)。
簡単な方法は、力ずくでそれを実行し、それをメモ化と組み合わせることです。
インタビュアーは、O(S) 時間アルゴリズムがあると言いました。ここで、S は出力する必要のある数値の数です。
誰がそれが何であるか知っていますか?