問題
https://atcoder.jp/contests/arc111/tasks/arc111_a
解法
開く
10^N を M^2 で割ったあまりを M で割って切り捨てる
解説
M 進法で考えます。
すると、 \lfloor \frac X M \rfloor は、 X の下 1 桁を取り除いたものになります。
これを M で割ったあまりは、 \lfloor \frac X M \rfloor の下 1 桁、つまり X の下から 2 桁目になります。
これを求めるには、 X を M^2 で割ったあまりを M で割って切り捨てればよいです。
例として、 M = 8 、 N = 3 のときを考えます。
10^N = 1000 になりますが、これは M 進数 では 1750_8 です。( _8 は 8 進数の意味です)
1750_8 の下から 2 桁目は 5 であり、これが答えです。
コード
N, M = gets.split.map(&:to_i)
puts 10.pow(N, M**2) / M
Discussion