atcoder#ABC238C. [ABC238C] digitnum

[ABC238C] digitnum

配点 : 300300

問題文

整数 NN が与えられるので、以下の問題を解いてください。

f(x)=f(x)= ( xx 以下の正整数で、 xx と桁数が同じものの数) とします。 f(1)+f(2)++f(N)f(1)+f(2)+\dots+f(N)998244353998244353 で割った余りを求めてください。

制約

  • NN は整数
  • 1N<10181 \le N < 10^{18}

入力

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

NN

出力

答えを整数として出力せよ。

16
73
  • 11 以上 99 以下の正整数 xx について、 xx 以下の整数で、 xx と桁数が同じものは 1,2,,x1,2,\dots,x です。- これより、 f(1)=1,f(2)=2,...,f(9)=9f(1)=1,f(2)=2,...,f(9)=9 となります。
  • 1010 以上 1616 以下の正整数 xx について、 xx 以下の整数で、 xx と桁数が同じものは 10,11,,x10,11,\dots,x です。- これより、 f(10)=1,f(11)=2,...,f(16)=7f(10)=1,f(11)=2,...,f(16)=7 となります。

結局、求める答えは 7373 です。

238
13870
999999999999999999
762062362

998244353998244353 で割った余りを求めることに注意してください。