2019牛客暑期多校训练营(第四场)K number(思维)
程序员文章站
2022-04-02 22:20:57
...
链接:https://ac.nowcoder.com/acm/contest/884/K
题意:给你一个全由数字字符组成的字符串,求出是300倍数的子串的个。0,00都算,并考虑前导零的情况。
思路:遍历一遍每次计算%3的值,如果本位和后一位都是0,把之前统计的num[mo]的个数加上,思想和https://blog.csdn.net/birdmanqin/article/details/97375159类似。注意0也算答案即可。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5+10;
char s[N];
int num[3],n,mo;
ll ans;
int main(void)
{
while(~scanf("%s",s+1))
{
ans=0;
n=strlen(s+1);
num[0]=1;
num[1]=num[2]=0;
mo=0;
for(int i=1;i<=n;i++)
{
mo=(mo*10+(s[i]-'0'))%3;
if(s[i]=='0'&&s[i+1]=='0')
ans+=num[mo];
num[mo]++;
if(s[i]=='0') ans++;
}
printf("%lld\n",ans);
}
return 0;
}
推荐阅读
-
2020牛客暑期多校第四场 H - Harder Gcd Problem(思维/构造)
-
2020牛客暑期多校 第四场H-Harder Gcd Problem(思维,gcd)
-
2019牛客暑期多校训练营(第四场)K number(思维)
-
2019牛客暑期多校训练营(第四场)K number(思维)
-
2019牛客暑期多校训练营 第四场 K – number (思维+前缀和)
-
牛客网暑期ACM多校训练营(第四场)G Maximum Mode(思维)
-
2019牛客暑期多校训练营(第四场)D triples I(构造+思维)
-
牛客网暑期ACM多校训练营(第四场)G.Maximum Mode (思维)
-
2019牛客暑期多校训练营(第四场)C:sequence(思维+连续最大和)
-
2019牛客暑期多校训练营(第四场)D——triples I(思维)