题意
给出一串数字,问有多少个子串所代表的数字可以被4整除。
思路
因为100是4的倍数。所以只需要考虑两位以内是否能整除就行了。
code
#include <bits/stdc++.h>
using namespace std;
char s[300000 + 5];
int main () {
scanf ("%s", s);
int len = strlen(s);
long long ans = 0LL;
for (int i=0; i<len; i++) {
if ((s[i] - '0') % 4 == 0) {
ans ++;
}
if (i == 0) continue;
int tmp = (s[i-1] - '0') * 10 + s[i] - '0';
if (tmp % 4 == 0) {
ans += i * 1LL;
}
}
printf ("%I64d\n", ans);
return 0;
}