CF1186C Vus the Cossack and Strings

题目描述

哥萨克 Vus 有两个二进制字符串,即仅由“0”和“1”组成的字符串。我们称这两个字符串为 $a$ 和 $b$。已知 $|b| \leq |a|$,即 $b$ 的长度不超过 $a$ 的长度。 Vus 会考虑 $a$ 中所有长度为 $|b|$ 的子串。我们称这些子串为 $c$。他将 $b$ 和 $c$ 中对应位置的字符进行比较,并统计两串中不同位置的数量。我们将这个函数记为 $f(b, c)$。 例如,设 $b = 00110$,$c = 11000$。在这两个字符串中,第 1、2、3 和 4 个位置的字符不同。 Vus 统计所有满足 $f(b, c)$ 为偶数的子串 $c$ 的数量。 例如,设 $a = 01100010$,$b = 00110$。$a$ 有四个长度为 $|b|$ 的子串:$01100$、$11000$、$10001$、$00010$。 - $f(00110, 01100) = 2$; - $f(00110, 11000) = 4$; - $f(00110, 10001) = 4$; - $f(00110, 00010) = 1$。 由于有三个子串 $f(b, c)$ 为偶数,所以答案是 $3$。 对于较长的字符串,Vus 无法计算答案。因此他请求你帮助他。

输入格式

第一行包含一个二进制字符串 $a$($1 \leq |a| \leq 10^6$)——第一个字符串。 第二行包含一个二进制字符串 $b$($1 \leq |b| \leq |a|$)——第二个字符串。

输出格式

输出一个整数,表示满足条件的子串数量。

说明/提示

第一个样例在题目描述中已经解释。 在第二个样例中,有五个满足条件的子串:$1010$、$0101$、$1111$、$1111$。 由 ChatGPT 4.1 翻译