Codeforces Round #581 (Div. 2)
A 按照案例是把二进制转换为十进制,让后计算4^k小于这个十进制,那么k的值就是答案,但是二进制的长度达到了100位,也就意味这最大值可以是2^99,但是如果用十进制的话,存不了那么大的数据,所以要用二进制转换为四进制 然后判断一些特殊值 比如010,奇数位的,补0 比如转换为四进制后为1000的,答案是3而不是4,因为该值刚好是4的幂方 再者,在补0时需要反向存储二进制 #include <iostream> #include <cstdio> #include <cstring> #define ll long long using namespace std; int main(){ char a[105]; char s[105]; char c[105]; int cnt=0; scanf("%s",a+1); int len=strlen(a+1); for(int i=1;i<=len;i++){ s[i]=a[len+1-i]; } if(len%2!=0){ s[len+1]='0'; len++; } for(int i=1;i<=len;i+=2){ if(s[i]=='0'&&s[i+1]=='0'){ c[cnt++]='0'; }else if(s[i]=='1'&&s[i+1]=='0'){ c[cnt++]='1'; }else if(s[i]==