UVa 10712 Count the Numbers
题目描述
给定三个非负整数 N N N ( 0 ≤ N ≤ 999 0 \leq N \leq 999 0≤N≤999), A A A, B B B ( 0 ≤ A ≤ B ≤ 2000000000 0 \leq A \leq B \leq 2000000000 0≤A≤B≤2000000000),统计在区间 [ A , B ] [A, B] [A,B] 内,有多少个整数的十进制表示包含 N N N 作为子序列。
子序列定义:不需要连续出现,但必须保持相对顺序。例如,数字 13 13 13 包含 3 3 3 作为子序列,因为可以从 13 13 13 中选出数字 3 3 3。
示例:
- 输入: N = 3 N = 3 N=3, A = 3 A = 3 A=3, B = 17 B = 17 B=17
- 输出: 2 2 2(数字 3 3 3 和 13 13 13)
题目分析
问题难点
- 大范围统计: B B B 最大可达 2 × 1 0 9 2 \times 10^9 2×109,无法直接枚举所有数字
- 子序列匹配:需要高效判断数字是否包含目标子序列
- 边界处理:需要处理 N = 0 N = 0 N=0