题目链接:https://codeforces.com/contest/1186/problem/C
思路:两个长度一样的零一串在1的个数同奇或同偶时不同的位数才会是偶数。
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int pre[maxn];
int main() {
string s , t;
ios::sync_with_stdio(0);
cin >> s >> t;
for(int i = 0 ; i < s.length() ; i++) {
if(s[i] == '1') {
pre[i + 1] = pre[i] + 1;
}
else {
pre[i + 1] = pre[i];
}
}
int cnt = 0 , ans = 0;
for(int i = 0 ; i < t.length() ; i++) {
if(t[i] == '1')cnt++;
}
for(int i = 1 ; i <= s.length() - t.length() + 1 ; i++) {
int tmp = pre[i + t.length() - 1] - pre[i-1];
if(tmp % 2 == cnt % 2)ans++;
}
cout << ans << "\n";
return 0;
}