atcoder#ABC194F. [ABC194F] Digits Paradise in Hexadecimal

[ABC194F] Digits Paradise in Hexadecimal

配点 : 600600

問題文

この問題において、十六進表記では 0 ~ 9, A ~ F を数字として扱い、A ~ F はそれぞれ十から十五を表すものとします。 また、特別の記述がない限り問題文中で扱われる数は全て十進表記されているものとします。

11 以上 NN 以下の整数のうち、先頭に 00 のない十六進表記で書くとちょうど KK 種類の数字が現れるようなものはいくつあるでしょうか ? 109+710^9 + 7 で割ったあまりを出力してください。

制約

  • 1N<162×1051 \le N \lt {16}^{2 \times 10^5}
  • NN は先頭が 0 でない十六進表記で与えられる
  • 1K161 \le K \le 16
  • 入力に含まれる値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN KK

NN は十六進表記で与えられる。

出力

答えを 109+710^9 + 7 で割ったあまりを出力せよ。

10 1
15

NN は十六進表記で与えられているため、十進数に直すと 1616 です。 11 以上 1616 以下の整数を、先頭に 00 のない十六進表記で書くと下記のようになります。

  • 11 から 1515 まで : 十六進表記に直すと 11 桁なので、出現する数字は 11 種類である
  • 1616 : 十六進表記に直すと 1010 なので、出現する数字は 22 種類である

よって、十六進表記に直した時に出現する数字が 11 種類なのは 1515 個です。

FF 2
225

出現する数字が 22 種類なのは、11 以上 255255 以下の 255255 個の整数のうち、十六進表記で $1, 2, 3, \dots, \mathrm{E}, \mathrm{F}, 11, 22, 33, \dots, \mathrm{EE}, \mathrm{FF}$ と表される 15+15=3015 + 15 = 30 個を除いたものです。

100 2
226
1A8FD02 4
3784674
DEADBEEFDEADBEEEEEEEEF 16
153954073

答えを 109+710^9 + 7 で割った余りを出力してください。