题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制数字,求出其长len,当len为奇数时,第一位为1,后面的位数如果都为0,则输出len,如果有一个不为0,则输出len 1; 当len为偶数时,则输出len。(之所以这样输出是因为题目给定4的次幂是从0开始的)
代码语言:javascript复制#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
string s;
int main()
{
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
cin >> s;
int len = s.length();
if(len % 2 == 0)
printf("%dn", len / 2);
else
{
int flag = 0;
for(int i = 1;i < len; i )
{
if(s[i] == '1')
{
printf("%dn", len / 2 1);
flag = 1;
break;
}
}
if(!flag)
printf("%dn", len / 2);
}
}