チャレンジの説明
すべての正の整数nには、すべてので始まりすべてで終わる10進数などで111...10...000割り切れる形式の数値が存在します。これは証明するのが非常に簡単です:(すべての)の形で異なる数のセットをとる場合、少なくとも2つは(鳩の巣の原理による)除算後に同じ剰余を与えます。これらの2つの数値の差は、割り切れ、希望する形式になります。あなたの目的は、この番号を見つけるプログラムを書くことです。n10n+1111...1111nn
入力説明
正の整数。
出力の説明
のようなp形式の数。複数ある場合は、それらのいずれかを表示します(最小のものである必要はありません)。111...10...000p ≡ 0 (mod n)
ノート
プログラムは妥当な時間内に答えを出さなければなりません。つまり、総当たり攻撃は許可されていません。
p = 0
while (p != 11..10.00 and p % n != 0)
p++
どちらでもありません:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
の形式で数字を繰り返す11..10..00ことは許可されます。
プログラムは、任意の大きさの入力を処理する必要はありません-上限は、言語の上限になります。
サンプル出力
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
11と少なくとも0そうでない場合、0任意の入力のためのソリューションです。(ただし、これを明確にするとよいでしょう。)
1です。