rt
Code:
#include <bits/stdc++.h>
using namespace std;
int n;
string a[200050];
int sum[200050][10];
map<int, int> mp[6]; // sum->cnt
map<int, int> cha[3];
int main() {
ios::sync_with_stdio(false);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
int len = a[i].size();
sum[i][0] = a[i][0] - '0';
for (int j = 1; j < len; j++) {
sum[i][j] = sum[i][j - 1] + a[i][j] - '0';
}
sum[i][len] = sum[i][len - 1];
mp[sum[i][len]][len]++;
if (len >= 2)
cha[sum[i][len - 2] - (a[i][len - 1] - '0')][1]++;
if (len >= 3)
cha[sum[i][len - 3] - (a[i][len - 1] - '0' + a[i][len - 2] - '0')][2]++;
}
int ans = 0;
for (int i = 1; i <= n; i++) {
int len = a[i].size();
for (int dig = 1; dig <= 5; dig++) {
if ((len + dig) % 2 == 1)
continue;
if (len > dig)
ans += mp[sum[i][len] - sum[i][len - dig - 1]][dig];
else if (len == dig)
ans += mp[sum[i][len]][dig];
else {
int ch = (dig - len) / 2;
ans += cha[sum[i][len]][ch];
// ans+=mp[sum[i][len]][dig];
// cout << 114514 << endl;
}
}
}
cout << ans << endl;
return 0;
}