🙆

ARC111 A - Simple Math 2 解説

2021/01/10に公開

問題

https://atcoder.jp/contests/arc111/tasks/arc111_a

解法

開く

10^NM^2 で割ったあまりを M で割って切り捨てる

解説

M 進法で考えます。
すると、 \lfloor \frac X M \rfloor は、 X の下 1 桁を取り除いたものになります。
これを M で割ったあまりは、 \lfloor \frac X M \rfloor の下 1 桁、つまり X の下から 2 桁目になります。
これを求めるには、 XM^2 で割ったあまりを M で割って切り捨てればよいです。

例として、 M = 8N = 3 のときを考えます。
10^N = 1000 になりますが、これは M 進数 では 1750_8 です。( _88 進数の意味です)
1750_8 の下から 2 桁目は 5 であり、これが答えです。

コード

N, M = gets.split.map(&:to_i)
puts 10.pow(N, M**2) / M

Discussion