题意,就是给你一个字符串,然后就是,其中的字串,看看有没有字串能被4整除。
题解那个看最后两个数字是否能被4整除。然后,看每一个字符能不能被4整除。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MaxN = 3e5 + 10;
char a[MaxN];
int dp[MaxN];
int main()
{
long long ans = 0;
scanf("%s",a);
memset(dp , 0 , sizeof(dp) );
for(int i = 0 ; i < strlen(a) ; i++)
if( (a[i] - '0') % 4 == 0) ans++;
for(int i = 1 ; i < strlen(a) ; i++){
// printf("ceshi = %d", 10 * ( a[i - 1] - '0') + a[i] - '0');
if(( 10 * ( a[i - 1] - '0') + a[i] - '0') % 4 == 0){
// printf("*");
dp[i] = i;
}
}
//for(int i= 0 ; i < strlen(a) ; i++) printf("dp[%d] = %d\n",i , dp[i]);
for(int i = 0 ; i < strlen(a) ; i++){
ans += dp[i];
}
printf("%I64d\n",ans);
return 0;
}