CF1217C

CF1217C

题意:

给定一个01串,一个good01串的定义是这个01串所代表的二进制数字刚好等于它的长度,允许前导零,问这个01串当中有几个good子串

解法:

枚举每一段连续的 $ 0 $ ,$ num_0 $ 为 $ 0 $ 的个数,后面的数值为 $ res $ ,只要 $ res \geq len$ , $ len $ 是二进制下区间长度,并且 $ res \leq len+num_0 $ ,则会产生答案,因为前导 $ 0 $ 可以匹配,但如果这样不行,直接break。

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> 

using namespace std; 

#define LL long long
#define N 200010

char ch[N]; 
int T,len;

int main() {
    scanf("%d",&T); 
    while(T--) {
        scanf("%s",ch + 1); 
        len = strlen(ch + 1); 
        int num_0 = 0; 
        LL ans = 0LL; 
        for(int i = 1 ; i <= len ; i++) {
	  	    if(ch[i] == '0') num_0++; 
		    else {
			    int res = 0; 
			    for(int j = i ; j <= len && res <= num_0 + (j - i + 1) ; j++) {
				    res = 2 * res + ch[j] - '0'; 
				    if (res >= (j - i + 1) && res <= (num_0 + j - i + 1)) ans++; 
				    else break; 
			    }
			    num_0 = 0; 
		    }
	    }
	    printf("%lld \n",ans);
    }
    //system("pause");
    return 0; 
}
posted @   西窗夜雨  阅读(168)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
历史上的今天:
2018-09-06 CF 983B 序列函数
2018-09-06 [HNOI2010]弹飞绵羊
2018-09-06 luogu P3393 逃离僵尸岛
点击右上角即可分享
微信分享提示