位数阶层
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
位数阶层
题目背景
Y 同学在研究数字的“阶层”特性时,发明了一个有趣的函数 。他认为,一个数 在其所属的“位数阶层”(例如所有三位数构成的阶层)中的排名,可以反映其相对大小。他将这个排名定义为 ,并对这个函数的前缀和产生了浓厚的兴趣。
题目描述
我们定义一个函数 ,其值为所有不大于 且与 的十进制位数相同的正整数的个数。
例如:
- : 与 位数相同的正整数是 。其中不大于 的有 ,共 个,所以 。
- : 与 位数相同的正整数是 。其中不大于 的有 ,共 个,所以 。
- 更一般地,如果 是一个 位数,那么 。
给定一个正整数 ,你的任务是计算 的值。
由于答案可能非常大,请输出结果对 取模。
输入格式
输入一行,包含一个正整数 。
输出格式
输出一个整数,表示 $\left( \sum_{i=1}^{N} f(i) \right) \pmod{998244353}$ 的值。
样例
样例输入 #1
16
样例输出 #1
73
样例输入 #2
238
样例输出 #2
13870
样例输入 #3
999999999999999999
样例输出 #3
762062362
提示
样例 1 解释
- 对于 (一位数),。
- 这部分的和为 。
- 对于 (两位数),。
- 这部分的和为 $\sum_{i=10}^{16} (i-9) = (10-9) + (11-9) + \dots + (16-9) = 1+2+\dots+7 = 28$。
总和为 。
数据范围与约定
- 对于 的数据,。
- 请注意, 的值会超过 32 位整型(
int
)的范围,需要使用 64 位整型(在 C++ 中为long long
)来存储。