I 字符串问题
题号:NC216052
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这是一道字符串操作问题。
刚开始,你拥有一个长度为n的只有'0'和'1'构成的字符串s。
现在,我们想要知道在这个字符串中,有多少组x,y(1 <= x <= y <= n)使得至少存在一组a, b使得1 <= a, b <= n 并且 x <= a < 2 * b + a <= y 并且 s_a == s_(a+b) == s_(2*a+b)。 s_X表示s的第X个字符。


输入描述:

输入一个字符串s,(1 <= |s| <= 200000)(|s|表示s的长度)。

输出描述:

输出有几组x,y满足条件
示例1

输入

复制
010101

输出

复制
3

说明

第一组中,可以取到x,y分别为1 5\1 6\2 6
示例2

输入

复制
11001100

输出

复制
0

说明

第二组中不存在任何满足条件的x,y