這是數學題題啊,老本行。
方法一:可以將除法轉移到對數域
b a=
elnb
a=e(
lnb−
lna)
\frac=^}}=^}
ab=eln
ab=
e(lnb
−lna)
c++ code:
class solution
};
方法二:任何乙個整數可以表示成以2的冪為底的一組基的線性組合.
分析:
可以對被除數進行分解。以 10 和 3 為例,首先我們確定 3 的最高次係數,10
>3∗
2110 > 3*
10>3∗
21&&10
<3∗
2210 < 3*
10<3∗
22,因此最高次係數為 2。然後我們用 10 減去3∗2
13*3∗21
,繼續進行剛才的過程,4
>3∗
204 > 3*
4>3∗
20&&4
<3∗
214 < 3*
4<3∗
21,第二高次係數為 1。我們迴圈進行這個過程,直到最後的數小於除數為止,這些除數前面所有係數的和即為所求。注意型別一定是long long
class solution
res +
= cnt;
b -= temp;}if
((dividend >0)
^(divisor >0)
) res =
-res;
if(res > int_max)
return int_max;
if(res < int_min)
return int_max;
return res;}}
;
[1] 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...
29 兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncate 8.345 8 以及 truncate ...