字符串]"/>
1415: 小ho的01串 [字符串]
1415: 小ho的01串 [字符串]
时间限制: 1 Sec 内存限制: 128 MB提交: 258 解决: 125 统计
题目描述
有一个由0
和1
组成的字符串,它好长呀--------一望无际
恩,说正题,小ho的数学不太好,虽然是学计算机的但是看见0
和1
也是很头疼的,
现在他的老师想让他计算出来包含K
个1
的子串有多少个-----呀,头要炸了!!!
小ho知道你的数学棒棒哒,所以来找你帮忙了。
输入
第一行是一个数K
。
第二行是一个字符串str
。
0 < |str| ≤ 106
输出
一个数S
,代表了满足条件的个数。
样例输入
2 101010
样例输出
6
这个题要注意非空子串的定义,求出其包含多少个1,就是求出n*m的值,n表示这个子串前面连续0的个数加1,注意是连续0 的个数,
m表示这个子串后面的连续0的个数加1.
在写时,注意在计算m时,要进行两次的break,终止第一次找出1的个数满足时的for,和满足后的for的值。
#include<stdio.h>
#include<string.h> int main() { int t; char s[1000010]; scanf("%d%s", &t, s); int len = strlen(s); int ch=0,chh=0,j,flag; int sum = 0; int a; for(int i = 0;i < len; i++) { flag=0; a=0; if(s[i] == '0') { ch++; } else { for(j = i; j < len; j++) { if(s[j] == '1') { a++; } if(a == t) { flag=1; for(int jj = j+1; jj < len;jj++) { if(s[jj] == '0') chh ++; if(s[jj] == '1') { break; } } break; } } // printf("%d %d\n",ch,chh); if(flag==1) sum +=(ch+1)*(chh+1); ch=0;chh=0; } } printf("%d\n",sum); }
更多推荐
1415: 小ho的01串 [字符串]
发布评论