AT_dwango2015_prelims_2 ニコニコ文字列

题目描述

给定一个由 $0$ 到 $9$ 组成的字符串 $S$。 对于某个字符串 $X$,如果 $X = "25"$,或者 $X = "2525"$,或者 $X = "252525"$,…… 也就是说,$X$ 是由若干次重复 "25" 拼接而成的字符串,那么称 $X$ 为“ニコニコ字符串”。例如,"25" 和 "25252525" 是ニコニコ字符串,而 "123" 和 "225" 不是ニコニコ字符串。 你的任务是,计算字符串 $S$ 中有多少种取出连续子串的方法,使得该子串是ニコニコ字符串。即使子串内容相同,只要取出的位置不同,也要分别计数。

输入格式

输入从标准输入读入,格式如下: > $S$ - 第 $1$ 行给出字符串 $S$。$S$ 的长度为 $1$ 到 $100\,000$ 之间。$S$ 的每个字符都是 $0$ 到 $9$ 的数字。

输出格式

输出一行,表示从字符串 $S$ 中取出ニコニコ字符串作为连续子串的方法数。 **注意:如果行末没有换行符,将被判定为不正确。**

说明/提示

## 部分分 本题设置了部分分。 如果你能对满足 $N \leq 2000$ 的数据集 1 全部答对,可以获得 $30$ 分。对没有额外限制的数据集 2 全部答对,则在上述基础上再获得 $70$ 分,总计 $100$ 分。 ## 样例解释 1 对于 $S = "2525"$ 的情况,取出子串为 "25" 的方法有 $2$ 种,取出子串为 "2525" 的方法有 $1$ 种,所以总共输出 $3$。 由 ChatGPT 4.1 翻译