题目描述
有一个由0
和1
组成的字符串,它好长呀--------一望无际
恩,说正题,小ho的数学不太好,虽然是学计算机的但是看见0
和1
也是很头疼的,
现在他的老师想让他计算出来包含K
个1
的子串有多少个-----呀,头要炸了!!!
小ho知道你的数学棒棒哒,所以来找你帮忙了。
输入
第一行是一个数K
。
第二行是一个字符串str
。
0 < |str| ≤ 106
输出
一个数S
,代表了满足条件的个数。
样例输入
2
101010
样例输出
6
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
#include<cstring>
#define N 1000002
char s[N];
long long ans=0;
int main()
{
int k,i,len,j,p,g1=0,g2=0,num=0,f;
cin>>k;
scanf(" %s",s);
len=strlen(s);
for(i=0; i<len; i++)
{
f=0;
if(s[i]=='0')
g1++;
else
{
for(j=i; j<len; j++)
{
if(s[j]=='1')
num++;
if(num==k)
{
f=1;
break;
}
}
for(j++; j<len; j++)
{
if(s[j]=='0')
g2++;
if(s[j]=='1')
break;
}
if(f==1)
ans+=(g1+1)*(g2+1);
g1=g2=0;
num=0;
}
}
cout<<ans<<endl;
return 0;
}
当时怎么也没想起来,%>_<%其实就是一道思维题,坐我旁边的大佬第一道ac题,我愣是到最后也没做出来orz