No.3089 Base M Numbers, But Only 0~9
タグ : / 解いたユーザー数 60
作問者 :

ストーリー
忙しい毎日に疲れたゆ~さんは妙なことを言い出しました。
「$10$ より大きい進数なのに 9
の次が A
じゃなくて 0
だったら大変なことになるよね。例えば $12$ 進数でそれをやると
$1,2,3,4,5,6,7,8,9,$$0$$,$$1$$,10,11,12,13,14,15,16,17,18,19,1$$0$$,1$$1$$,20,21,\dots$ ってなるんだ。
これを踏まえたうえでこんな問題を思いついたんだ。」
問題文
十進数正整数 $x$ と $10$ 以上の整数 $y$ (この $x,y$ は十進数とします)に対して$x$ を $y$ 進数に変換し、使われる数字のうち $j$ 番目に小さいもの($0$-indexed)を $j\mod{10}$ に置き換えた数字列を $x$ の十種 $y$ 進数表記と呼ぶこととします。
より厳密には、以下のルールで $x$ の十種 $y$ 進数表記を定義します。
- はじめ、 $S$ を空文字列とし、$i=1,2,\dots$ について、以下の操作を繰り返す。
- もし、$x\ge y^{i-1}$ なら、$S$ の左に $(\lfloor x/y^{i-1} \rfloor \mod{y})\mod{10}$ を付け加える。
- そうでないなら、操作を終了する。
例として、$31$ は $31=1F_{(16)}$ であり、$1$ は $1$ 番目に、$F$ は $1$$5$ 番目に小さいことから十種 $16$ 進数表記は $15$ です。
$168$ は $168 = A8_{(16)}$ であり、 $A$ は $1$$0$番目に、$8$ は $8$ 番目に小さいことから十種 $16$ 進数表記は $08$ です。
$10$ 以上の正整数 $M$ と十種 $M$ 進数表記の数字列 $N$ が与えられます。
十進数の正整数のうち十種 $M$ 進数表記が $N$ となるものを $x$ とします。そのような $x$ すべての総和を求めてください。(もし、条件を満たす $x$ が存在しない場合、総和を $0$ とします。)
ただし、答えは極めて大きくなる可能性があるため、答えを $998244353$ で割ったあまりを出力してください。
入力
$M$ $N$
$M$ が先に与えられる点に注意してください。
制約
- $N$ は
0123456789
からなる長さ $1$ 以上 $2\times 10^5$ 以下の数字列 - $10 \le M \le 10^{18}$
- $M$ は整数
出力
答えを一行に出力し、最後に改行してください。
サンプル
サンプル1
入力
13 21
出力
388
$27=21_{(13)},37=2B_{(13)},157=C1_{(13)},167=CB_{(13)}$です。
$27,37,157,167$ のすべて、またそれらに限り十種 $13$ 進数表記が $21$ になります。総和は $388$ です。
サンプル2
入力
25 1
出力
33
$1,11,21$ のすべて、またそれらに限り十種 $25$ 進数表記が $1$ になります。総和は $33$ です。
サンプル3
入力
10 998244357
出力
4
$998244357$ のみ十種 $10$ 進数表記が $998244357$ になります。
$998244353$ で割った余りを出力する点に注意してください。
サンプル4
入力
998244352 314159265358979323846
出力
112653444
$N$ は十進数の整数とみなしたときに極めて大きな値となる可能性がある点に注意してください。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。