输入一个十进制整数
。
输出一个整数,表示
的二进制表示中,最长连续
段的长度。
200
2
在这个样例中,十进制
等于二进制
,其中最长连续
段的长度为
。
1023
10
在这个样例中,十进制
等于二进制
。
本题数据已规范为单组询问(2025/01/15)。
while True: try: str1 = int(input())# 转换为int str2 = str(bin(str1))#转换为二进制 str2=str2.replace('0b', "")#去除前缀0b str2 = str2.replace('0', " ")#替换全部0为空格 str2 = str2.split()#以空格区分项 str2 = list(map(int, str2))#全部项转换为int str2.sort(reverse= True)#升序排序 print(len(str(str2[0])))#第一个的长度就是了~~~ except: break
哎,,没那么好使的脑子,继续学习吧 def getResult(n): binaryStr = bin(n) temp_list = [] for i in range(len(binaryStr)): if binaryStr[i] == "1": for j in range(i,len(binaryStr)): if "0" not in binaryStr[i:j+1]: maxNumber = j-i+1 temp_list.append(maxNumber) return max(temp_list) try: while True: a = input() print(getResult(int(a))) except: pass
# 思路:二进制字符串中只有1和0两种字符,那么我们以‘0’作为分隔符(刀)来切割二进制串。 # 遇到每个'0'就切一刀,若刀和刀之间没有内容,则为空字符串,也包含在结果当中。 # 如:字符串'111000101100111111'.split('0')得到['111', '', '', '1', '11', '', '111111'] # 我们只需统计结果列表中最大的长度是几,即为本题答案。 while True: try: ten = int(input().strip()) bin = format(ten, 'b') print(max(map(len, bin.split('0')))) except: break
while 1: try: n=int(input()) binn=bin(n) l=0 li=[] for i in str(binn): if i=='1': l+=1 else: l=0 li.append(int(l)) num=max(li) print(num) except: break
while 1: try: a=bin(int(input())).replace("0b","").split("0") print(len(max(a,key=len))) except: break
while True: try: n = int(input()) #转为二进制 string = bin(n) #在0处拆开,并取第3位及以后,因为前两位是0b n = string[2:].split('0') weishu = [len(strs) for strs in n] print(max(weishu)) except: break