atcoder#ABC238C. [ABC238C] digitnum

[ABC238C] digitnum

题目描述

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

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

输入格式

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

N N

输出格式

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

题目大意

题目描述

定义 f(x)f(x) 为不大于 xx 且位数与 xx 相同的正整数的个数。

给定 NN,求 i=1Nf(i)mod998244353\sum\limits_{i=1}^Nf(i)\bmod 998244353

输入格式

一行一个整数 NN

输出格式

一行一个整数,代表结果。

数据范围与提示

对于 100%100\% 的数据,1N<10181\leq N<10^{18}

样例 #1 解释:

  • 对于 1x91\leq x\leq 9f(x)=xf(x)=x
  • 对于 10x1610\leq x\leq 16f(x)=x9f(x)=x-9

综上,和为 7373

16
73
238
13870
999999999999999999
762062362

提示

制約

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

Sample Explanation 1

- 1 1 以上 9 9 以下の正整数 x x について、 x x 以下の整数で、 x x と桁数が同じものは 1,2,,x 1,2,\dots,x です。 - これより、 f(1)=1,f(2)=2,...,f(9)=9 f(1)=1,f(2)=2,...,f(9)=9 となります。 - 10 10 以上 16 16 以下の正整数 x x について、 x x 以下の整数で、 x x と桁数が同じものは 10,11,,x 10,11,\dots,x です。 - これより、 f(10)=1,f(11)=2,...,f(16)=7 f(10)=1,f(11)=2,...,f(16)=7 となります。 結局、求める答えは 73 73 です。

Sample Explanation 3

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