知っておくべきこと:
まず、ラッキーナンバー。
ラッキーナンバーは次のように生成されます:
すべての自然数を取る:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
次に、各2番目の数字を削除します。
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
今、3
安全です。
3番目ごとに番号を削除します。
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
今、7
安全です。
7番目ごとに番号を削除します。
続けて、すべてのn
番目の番号を削除します。ここで、削除n
後の最初の安全な番号です。
安全な番号の最後のリストは、ラッキーナンバーです。
不運な数字は、数字の個別のリストで構成されています[U1, U2, U3... Un]
。
U1
幸運な「候補者」から削除された最初の数字のセットであるため、次のとおりです。
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
削除される2番目の数値セットです。
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
などなど(U3
3番目のリスト、U4
4番目など)
チャレンジ:
あなたのタスクは、2つの入力m
とが与えられるとn
、m
リストのth番目の数を生成しますUn
。
入力と出力の例:
(5, 2) -> 29
(10, 1) -> 20
仕様:
- あなたのプログラムは、
m
最大で1e6
、そしてn
最大で動作しなければなりません100
。- あなたは、両方のことが保証されている
m
とはn
正の整数です。 - 興味があるなら、
U(1e6, 100)
=5,333,213,163
。(ありがとう@pacholik!)
- あなたは、両方のことが保証されている
- プログラムは、合理的な最新のコンピューターで1日以内にそれを計算する必要があります。
これはcode-golfなので、バイト単位の最短コードが勝ちです!
PS:誰かがこれらを生成するための一般的な公式を思いついたらいいと思います。数式がある場合は、答えに入れてください!
(1e6,1e6)
か?
n=1
ケースで機能しないことは許容されますか?これは特別であるため、他のすべてのケースでは、次のラッキーナンバーの0から始まるインデックスはn-1
です。