解题思路
将原数字串 S 看作由三部分组成:前缀 A(可为空)、被删除的非空连续子串 B、后缀 C(可为空)。删除 B 后,剩余字符拼接成新的数字串,其数值等于 VA×10lenC+VC,其中 VA 为 A 的十进制数值,lenC 为 C 的长度,VC 为 C 的数值。要求该值能被 15 整除。
由于 15 较小,可以采用模 15 的前缀统计与后缀枚举,具体流程如下:
- 预处理前缀模频数
记 L=∣S∣。定义 pref[i][m] 为前 i 个字符(S[0..i−1])的所有前缀(包括空前缀)中,数值模 15 等于 m 的个数。
初始时 pref[0][0] = 1(空前缀模 15 为 0),其余为 0。