题目链接
可以发现
十进制4 对应 二进制100
十进制16 对应 二进制10000
十进制64 对应 二进制1000000
可以发现每多两个零,4的次幂就增加1.
用string读入题目给定的二进制数字,求出其长len,当len为奇数时,第一位为1,后面的位数如果都为0,则输出len,如果有一个不为0,则输出len+1;
当len为偶数时,则输出len。(之所以这样输出是因为题目给定4的次幂是从0开始的)
#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("%d\n", len / 2); else { int flag = 0; for(int i = 1;i < len; i++) { if(s[i] == '1') { printf("%d\n", len / 2 + 1); flag = 1; break; } } if(!flag) printf("%d\n", len / 2); } }