想了一下
总之最多好像就61次? (虽然我跑60次也过了)
for i in range(1,62)
先算num1-i*num2的部分
然后看这个num1-i*num2有几个1bit
若现在的i>这个bit数 应该都是可以减成0的 (这个只是感觉 但应该就是ㄌ
直觉想到一个case是当i太多 但其实num1-i*num2没这么多1可以减
就加一个case挡掉
def makeTheIntegerZero(self, num1: int, num2: int) -> int:
cur = num1
for i in range(60):
cur -= num2
if cur>0:
if cur.bit_count()<=(i+1) and cur>=(i+1):
return i+1
return -1