ABC100 B問題 Ringo's Favorite Numbers のずるい解き方

ABC100 B問題 Ringo's Favorite Numbers のズルい解き方を解説します。

atcoder.jp

DとNが与えられて、100 で ちょうど D 回割りきれる正の整数のうち、N番目に小さい数を求める問題です。
Dは0か1か2、Nは 1 \leq N \leq 100の整数です。
サンプルを見ていくと式が浮かびました。
 D = 0, N = 5の時、100で割り切れない数は1, 2, 3, 4, 5, 6となっていて、5番目に小さい数は5。
 D = 1, N = 11の時、100で1回割り切れる数は100, 200, 300, 400, 500, なので11番目に小さい数は1100。
なので答えは 100^D * Nということが推測できます。
ただし、気をつけないといけないのは N = 100の時です。
 D = 0, N = 100の場合、先程の式だと100が答えになってしまいますが、100は1回割り切れてしまうので、101が正解です。
なのでN = 100の時だけ答えは 100^D * 101となります。
このN = 100のケースに早く気づければ楽なのかなと思います。

D, N = map(int, input().split())
# N が100の時だけ割り切れるので101にする
if N == 100:
  N = 101
ans = (100 ** D) * N
print(ans)

ちゃんとした数学的な発想の解き方は公式解説を見てください。
この解き方は公式解説でズルい解き方と言われてました。。。すみません。