29 兩數相除 python

2021-09-14 01:28:22 字數 571 閱讀 5417

題:給定兩個整數,將兩數相除,不能用乘法、除法和mod運算子

法:規定不能用乘法、除法和取餘操作的話,就只能用加減法和位運算,其中右移就相當於乘2倍操作

def divide(self, dividend, divisor):

""":type dividend: int

:type divisor: int

:rtype: int

"""flag=1

if (dividend<0 and divisor>0) or (dividend>0 and divisor<0):flag=-1

m,n=abs(dividend),abs(divisor)

res=0

while m>=n:

p,t=1,n

while m>= t<<1:

p<<=1

t<<=1

res+=p

m-=t

res*=flag

if res<-2**31 or res>2**31-1:return 2**31-1

return res

29 兩數相除

這是數學題題啊,老本行。方法一 可以將除法轉移到對數域 b a eln b a e ln b ln a frac ab eln ab e lnb lna c code class solution 方法二 任何乙個整數可以表示成以2的冪為底的一組基的線性組合.分析 可以對被除數進行分解。以 10 和...

29 兩數相除

參考文獻 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。example 輸入 dividend 10,divisor 3 輸出 3 二進位制遞迴 class solution l...

29 兩數相除

29.兩數相除 難度中等321收藏分享切換為英文關注反饋 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncat...