Description:

整数aとbが与えられる。(0 < a, b < 100000000)
aとbの間の数(両端含む)を全て10進表記で書き並べた時、現れる0, 1, ... 9の個数をそれぞれ求めよ。

Answer:

(0, X]に於いて答えを求められる関数f(X)を作り、f(max(a,b)) - f(min(a,b)-1)を計算するのが楽。
Xの下一桁が9なら、f((X+1)/10)からf(X)を簡単に計算でき、そうでないなら、f(X-1)にXの分だけ加えてやればよい。

Source: