loj#P4783. 「RMI 2019」幸运数字
「RMI 2019」幸运数字
题目描述
题目译自 Romanian Master of Informatics 2019 Day1 T2 「Lucky Numbers」
众所周知,在某些文化中,数字 被认为会带来厄运。
现在,给你一个由 个数字组成的数字 。你需要计算出有多少个小于或等于 的数字,在它们的十进制表示中不包含子字符串 。由于答案可能会非常大,你需要将结果对 取模。
此外,你还需要处理 个操作,操作分为两种类型:
- :计算有多少个小于或等于子字符串 的数字,在十进制表示中不包含子字符串 。同样,由于答案可能很大,结果需对 取模。这里, 表示 从从左到右第 个数字开始到第 个数字结束的子字符串。
- :将 的某个数字修改掉。具体来说,将从左到右第 个数字改为 。
注意:数字 的索引从 开始。
注意:数字 及其子字符串 可能包含前导零。
输入格式
输入的第一行包含两个整数 和 ,分别表示数字 的位数和你需要处理的操作数量。
第二行输入数字 。
接下来的 行描述需要处理的查询。每行以一个整数 开头,表示操作的类型:
- 如果 ,则该行描述一个查询,后面跟着两个整数 和 $(1 \leq \texttt{radixL} \leq \texttt{radixR} \leq N)$,表示你需要考虑的子字符串的左右边界。
- 如果 ,则该行描述一个更新,后面跟着两个整数 和 $(1 \leq \texttt{radix} \leq N, 0 \leq \texttt{newDigit} \leq 9)$,表示需要更改的数字位置和新值。
输出格式
输出的第一行包含一个整数,表示有多少个小于或等于 的非负整数,在十进制表示中不包含子字符串 。由于答案可能很大,需对 取模。
然后,对于每个类型 的查询,在单独一行中输出答案,并对 取模。
6 10
560484
2 6 4
2 1 4
2 5 6
2 6 1
2 3 6
1 3 6
1 1 3
1 6 6
1 2 6
2 1 7
528145
6228
452
2
63454
样例中有 个小于或等于 560484 的非负整数,其十进制表示中不包含子字符串 。注意,这包括数字 。
- 初始时, 为 560484。
- 修改
2 6 4
后, 变为 560484。 - 修改
2 1 4
后, 变为 460484。 - 修改
2 5 6
后, 变为 460464。 - 修改
2 6 1
后, 变为 460461。 - 修改
2 3 6
后, 变为 466461。 - 查询
1 3 6
要求计算小于或等于 的非负整数中有多少个不含子字符串 ,结果为 。 - 查询
1 1 3
要求计算小于或等于 (前三位)的不含 13 的非负整数数量,结果为 。 - 查询
1 6 6
要求计算小于或等于 (第 位)的非负整数中不含 的数量,结果为 (即 和 )。 - 查询
1 2 6
要求计算小于或等于 (第 到 位)的非负整数中不含 的数量,结果为 。 - 修改
2 1 7
后, 变为 766461。
数据范围与提示
详细子任务附加限制及分值如下表所示。
子任务 | 分值 | 附加限制 |
---|---|---|
,所有操作均为类型 1 | ||
,所有操作均为类型 1 | ||