ABC 295
Table of Contents
D - Three Days Ago
解説 AC
void solve() {
string S;
cin >> S;
int n = S.size();
vvll v(n + 1, vll(10, 0));
rep(i, n) {
v[i + 1][S[i] - '0']++;
}
rep(k, 10) {
rep(i, n) {
v[i + 1][k] += v[i][k];
v[i + 1][k] %= 2;
}
}
vll cnt(1 << 10, 0);
rep2(i, 0, n + 1) {
int x = 0;
rep(k, 10) {
x *= 2;
if (v[i][k])
x += 1;
}
cnt[x]++;
}
ll ans = 0;
rep(i, 1 << 10) {
ans += cnt[i] * (cnt[i] - 1) / 2;
}
cout << ans << endl;
}