29、Divide Two Integers
兩個整數相除
將兩個整數相除,要求不使用乘法、除法和 mod 運算符。
如果溢出,返回INT_MAX.
樣例
給定被除數 = 100
,除數 = 9
,返回 11
。
分析:
代碼:
class Solution {
public:
typedef long long ll;
int divide(int dividend, int divisor) {
ll end=abs((ll)dividend);
ll sor=abs((ll)divisor);
ll res=0,shift=31;
while(shift>=0)
{
if(end>=sor<<shift)//a(n)不爲0
{
end-=sor<<shift;
res+=1LL<<shift;//加上a(n)
}
shift--;
}
res=(dividend^divisor)>>31?-res:res;//比較正負號
if(res>INT_MAX)return INT_MAX;
return res;
}
};