#P15180. [hacker2025R2]Dividing Passcodes

    ID: 14396 传统题 20000ms 512MiB 尝试: 2 已通过: 1 难度: 7 上传者: 标签>CF2200数位DP状压DP数学动态规划前缀和记忆化搜索

[hacker2025R2]Dividing Passcodes

题目描述

在 Whacker Cup 于 Meta 园区举行期间,访客需要把随身物品存放在储物柜中。这些储物柜通常是给尚未分配固定工位的培训生使用的。

储物柜需要设置密码,密码是正整数。组织者原本计划直接从闭区间 [L,R][L,R] 中分配密码,但他们担心这些密码在密码学意义上的强度。

对于任意整数 K>1K>1,如果一个密码 XX 的十进制表示中,存在至少一个连续子串,使得该子串的数字和能被 KK 整除,则称 XX 在 Meta 的特殊加密方案中是 KK-weak 的。

例如,292312923177-weak 的,因为它包含子串 923923,其数字和为 1414,可以被 77 整除;但 512512 不是 77-weak 的。

请计算区间 [L,R][L,R] 中有多少个不同的 KK-weak 密码。由于答案可能很大,请输出其对 998244353998244353 取模后的结果。

数据范围

  • 1T801 \le T \le 80
  • 1LR1020251 \le L \le R \le 10^{2025}
  • 2K252 \le K \le 25

输入格式

输入第一行包含一个整数 TT,表示测试用例数。

每个测试用例占一行,包含三个空格分隔的整数 L,R,KL,R,K

注意:LLRR 可能非常大,应按大整数或字符串处理。

输出格式

对于第 ii 个测试用例,输出:

Case #i: x

其中 xx 表示区间 [L,R][L,R]KK-weak 密码的数量,对 998244353998244353 取模。

样例输入

4
1 3 2
129 135 5
98 3669 11
12345678 87654321 20

样例输出

Case #1: 1
Case #2: 4
Case #3: 2025
Case #4: 66132213

样例解释

第一个样例中,需要统计 [1,3][1,3] 内的 22-weak 密码。区间中唯一的 KK-weak 密码是 22,它唯一的子串 2 的数字和为 22,能被 22 整除。因此答案为 11

第二个样例中,需要统计 [129,135][129,135] 内的 55-weak 密码:

  • 129129 的所有子串为 [1,2,9,12,29,129][1,2,9,12,29,129],对应数字和为 [1,2,9,3,11,12][1,2,9,3,11,12]。这些数字和都不能被 55 整除,所以 129129 不是 55-weak;
  • 130130 包含子串 0,其数字和为 00,能被 55 整除,所以它是 55-weak;
  • 131131 包含子串 131,其数字和为 55,能被 55 整除,所以它是 55-weak;
  • 132132 包含子串 32,其数字和为 55,所以它是 55-weak;
  • 133133134134 不是 55-weak;
  • 135135 包含子串 5,所以它是 55-weak。

因此最终答案为 44