CF1204A 题解

洛谷链接&CF 链接

本篇题解为此题较简单做法较少码量,并且码风优良,请放心阅读。

1|0题目简述

给定一个二进制字符串 S,求这个二进制数包含 4k 的个数。

特殊的:若 4k=S 则此情况不计

2|0思路

简单思维题

通过二进制进行操作,首先二进制长度 (1len100) 还是挺大的,如果想直接模拟的话,转为十进制是不现实的,所以只能通过二进制操作

通过样例观察可发现,二进制无非就两种情况

  1. 长度为偶数

  2. 长度为奇数

对于情况 1 就很简单,因为此题的根本是找二进制的奇数位的个数,所以对于长度为偶数的字符串,直接输出长度除以 2 即可。

对于情况 2,我们就需要判断除最高位以外是否有其他位为 1 的情况,也非常简单,稍微模拟即可。

经过以上分类讨论,思路就很清晰了,下面是代码实现

#include<iostream> using namespace std; string str; int main(){ cin >> str; int n = str.length(); // 记录字符串长度 // 长度为偶数,情况 1 if(!(n & 1)) { cout << n / 2; return 0; } // 长度为奇数,情况 2 // 模拟即可 for(int i = 1; i < n; i ++) if(str[i] == '1'){ cout << n / 2 + 1; // 除最高位有其他位为 1,正常输出 return 0; } cout << n / 2; // 否则特判 return 0; }

提交记录

The End!


__EOF__

本文作者So_noSlack
本文链接https://www.cnblogs.com/So-noSlack/p/17599617.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   So_noSlack  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示