链接:https://ac.nowcoder.com/acm/contest/1080/E
来源:牛客网
题目描述
tokitsukaze有一个长度为n的字符串,字符串仅包含'0'-'9'。
tokitsukaze要把这个字符串切割成若干个子串,每个子串作为一个十进制的数,能被3整除,且不含前导0。
问有多少种切割的方案。由于答案可能很大,请输出mod 998244353 后的结果。
输入描述:
第一行包含一个正整数n,(1≤n≤10^5)。 第二行包含一个长度为n的字符串s,('0'≤s[i]≤'9')。
输出描述:
输出一个整数,表示方案数,mod 998244353 后的结果。
示例1
输入
1 1
输出
0
示例2
输入
1 0
输出
示例3
输入
4 1203
输出
3
说明
(1) 1203 (2) 120|3 (3) 12|0|3 所以方案数为3。 注意:12|03,视作不合法,因为有前导0。
题解:
用dp[i]表示字符串前缀s1s2....si,这个子串的分割方案数。
然后我没枚举最后一次在哪个字母前分割,很容易想到一个二维的dp
dp[0]=1;
for(int i