大致题意:
给出一串数,从中找出连续的字串,求能够整除4的字串的个数
方法:
从后往前遍历
如果一个数的后两位能被4整除,则这个数就是4的倍数
#include <bits/stdc++.h>
using namespace std;
char str[10000000];
int main()
{
while(~scanf("%s",str))
{
long long ant = 0;
int len = strlen(str);
for(int i=len-1; i>=0; i--)
{
if((str[i] - '0') % 4 == 0)
ant++;
for(int j=i-1; j>=0; j--)
{
long long sum = 0;
for(int k=j; k<=i; k++)
sum = sum * 10 + (str[k] - '0');
if(sum % 4 == 0)
{
if(i - j == 1)
{
ant += j+1;
break;
}
}
else break;
}
}
printf("%I64d\n",ant);
}
return 0;
}
寻找整除4的连续字串数量

本文介绍了一种算法,用于从给定的一串数中找出所有能够整除4的连续子串的数量。算法从后向前遍历字符串,通过检查子串的最后两位是否能被4整除来判断其是否为4的倍数。
1274

被折叠的 条评论
为什么被折叠?



