第一题,代码写的不好看:大概思路是递归,看一下lr二进制都是几位。如果lr二进制位数不同输出0,如果相同把lr都减去最高位二进制代表的数值(比如8等等),进行递归同样操作 import math while True: try: t=int(input()) qujian=[] for i in range(t): qujian.append(list(map(int,input().split(" ")))) def fun(x): return int(math.ceil(math.log(x+1,2))) def fun3(l,r): l_ji=fun(l) r_ji=fun(r) if l_ji!=r_ji: return 0 else: return 2**(l_ji-1)+fun3(l-2**(l_ji-1),r-2**(l_ji-1)) for i in range(t): final=fun3(qujian[i][0],qujian[i][1]) print(final) except: break
3 4

相关推荐

牛客网
牛客企业服务