CF1601F Two Sorts
题目描述
将 $1$ 到 $n$(包含)的整数按字典序排序(将整数视为字符串)。排序后得到数组 $a_1, a_2, \dots, a_n$。
计算 $(\sum_{i = 1}^n ((i - a_i) \mod 998244353)) \mod 10^9 + 7$ 的值。
此处 $x \mod y$ 表示 $x$ 除以 $y$ 的余数。该余数始终非负且不超过 $y - 1$。例如 $5 \mod 3 = 2$,$(-1) \mod 6 = 5$。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 10^{12}$)。
输出格式
输出一个整数——所求的和。
说明/提示
当且仅当满足以下条件之一时,字符串 $a$ 字典序小于字符串 $b$:
- $a$ 是 $b$ 的前缀且 $a \ne b$;
- 在第一个不同的位置,$a$ 的字符比 $b$ 对应位置的字符更小。
例如:
- $42$ 字典序小于 $6$,因为第一位不同且 $4 < 6$;
- $42 < 420$,因为 $42$ 是 $420$ 的前缀。
设 $M = 998244353$。
第一个样例中,数组 $a$ 为 $[1, 2, 3]$:
- $(1 - 1) \mod M = 0 \mod M = 0$
- $(2 - 2) \mod M = 0 \mod M = 0$
- $(3 - 3) \mod M = 0 \mod M = 0$
最终结果为 $(0 + 0 + 0) \mod 10^9 + 7 = 0$
第二个样例中,数组 $a$ 为 $[1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9]$:
- $(1 - 1) \mod M = 0$
- $(2 - 10) \mod M = (-8) \mod M = 998244345$
- $(3 - 11) \mod M = (-8) \mod M = 998244345$
- $(4 - 12) \mod M = (-8) \mod M = 998244345$
- $(5 - 2) \mod M = 3 \mod M = 3$
- $ (6 - 3) \mod M = 3 \mod M = 3 $
- $ (7 - 4) \mod M = 3 \mod M = 3 $
- $ (8 - 5) \mod M = 3 \mod M = 3 $
- $ (9 - 6) \mod M = 3 \mod M = 3 $
- $ (10 - 7) \mod M = 3 \mod M = 3 $
- $ (11 - 8) \mod M = 3 \mod M = 3 $
- $ (12 - 9) \mod M = 3 \mod M = 3 $
最终结果为 $ (0 + 998244345 + 998244345 + 998244345 + 3 + 3 + 3 + 3 + 3 + 3 + 3 + 3) \mod 10^9 + 7 $ $ = $ $ 2994733059 \mod 10^9 + 7 $ $ = $ $ 994733045 $