全世界就我不知道一个数各位数之和是3,这个数就是3的倍数。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
char s[maxn];
ll cnt[3], now;
int main() {
scanf("%s", s + 1);
ll ans = 0;
cnt[0] = 1;
for (int i = 1; s[i]; ++i) {
ll cnt0 = 0;
while (s[i] == '0') {
++i, ++cnt0;
}
ans += (cnt0 + 1) * cnt0 / 2;
if (cnt0 >= 2) {
ans += (cnt[now] - 1) * (cnt0 - 1);
}
cnt[now] += cnt0;
now = (now + s[i] - '0') % 3;
++cnt[now];
}
printf("%lld\n", ans);
return 0;
}