#P16797. [蓝桥杯 2026 国 B] 密码提取

    ID: 19138 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>数学前缀和2026蓝桥杯国赛

[蓝桥杯 2026 国 B] 密码提取

题目描述

小蓝在遗迹中发现了一面数字密码墙。密码墙可以看作一个长度为 NN 的字符串 SS,字符串中只包含数字 00 到 99。

小蓝可以从 SS 中截取任意一个非空连续子串,并将这个子串视作一个十进制整数。子串允许包含前导零,任意长度的前导零都不影响最终数值;若子串全部由数字 00 构成,则无论子串长度是多少,其数值均为 00。例如,0505 和 005005 的数值都为 55,00 和 0000 的数值均为 00。

如果两个子串的起止位置不同,即使它们对应的数值相同,也视为两种不同的截取方案。

现在小蓝有 MM 次尝试。第 ii 次尝试给出一个安全阈值区间 [li,ri][l_i, r_i]。对于每次尝试,请你计算有多少种截取方案,使得截取得到的十进制数值落在 [li,ri][l_i, r_i] 内。

输入格式

第一行包含两个正整数 N,MN, M,分别表示数字字符串的长度和询问次数。

第二行包含一个长度为 NN 的数字字符串 SS。

接下来 MM 行,每行包含两个整数 li,ril_i, r_i,表示一次查询的安全阈值区间。

输出格式

输出 MM 行。第 ii 行输出一个整数,表示第 ii 次查询的合法截取方案数。

5 3
00510
0 5
1 10
50 510
8
5
6

提示

【样例说明】

字符串为 0051000510。按数值统计所有非空连续子串,可以得到:

  • 数值 00:子串为 00 的截取方案共 33 种,子串为 0000 的截取方案共 11 种,合计 44 种;
  • 数值 11:子串为 11 的截取方案共 11 种;
  • 数值 55:子串分别为 55、0505、005005 的截取方案各 11 种,合计 33 种;
  • 数值 1010:子串为 1010 的截取方案共 11 种;
  • 数值 5151:子串分别为 5151、051051、00510051 的截取方案各 11 种,合计 33 种;
  • 数值 510510:子串分别为 510510、05100510、0051000510 的截取方案各 11 种,合计 33 种。

因此,区间 [0,5][0, 5] 的答案为 4+1+3=84+1+3=8;区间 [1,10][1, 10] 的答案为 1+3+1=51+3+1=5;区间 [50,510][50, 510] 的答案为 3+3=63+3=6。

【评测用例规模与约定】

对于 30%30\% 的评测用例,1≤N,M≤10001 \le N, M \le 1000。

对于 80%80\% 的评测用例,1≤N,M≤50001 \le N, M \le 5000。

对于所有评测用例,1≤N,M≤1061 \le N, M \le 10^6,0≤li≤ri≤1000000 \le l_i \le r_i \le 100000。