//C++:// #include <iostream> using namespace std; int main(){ int n; while(cin >> n){ int k=0; for(k=0;n!=0;k++){//遇到进制的问题,多考虑用位运算 n=n&(n<<1);//求n与n移位后按位与的结果,如果连续的1的个数为1,则更新后的n为0; }//如果有多个连续的1,则按位与之后其他位都为0,而连续1的个数减1;依次循环,直到n为0,k记录了移位多少次,即为连续1的个数 cout << k <<endl; } return 0; }
#python3:# while True: try: n=bin(int(input()))[2:]#将输入数字转换为二进制,注意前两位为0b代表二进制 s=n.split("0")#按字符串0分片拷贝n length=0 for i in s: if len(i)>length:#考察每一个非零字符串的长度 length=len(i)#更新长度计数 print(length) except: break