LeetCode_Divide Two Integers
2013-03-29 11:05
316 查看
Divide two integers without using multiplication, division and mod operator.
这里解释下为什么必须要使用long long 才能A掉,因为计算机中的数字用补码表示,所以负数能够表示的范围比较大,去符号变正数后超过int的表示范围,所以必须使用long long
int divide(int dividend, int divisor) { int flag =1; if(dividend <0) flag *= -1; if(divisor <0) flag *= -1; unsigned long long d1 = abs((long long)dividend); unsigned long long d2 = abs((long long)divisor); unsigned long long temp; if(d1 < d2) return 0; if(d1 == d2) return 1* flag; if(d2 == 1) return d1* flag; unsigned long long count = 1; temp = d2; while(d1>temp){ temp = temp<<1 ; count = count<<1 ; } int result = 0; while(d1 > d2){ //下面判断中的=很关键 while(d1 >= temp){ d1 = d1 - temp; result += count; } temp = temp >>1; count = count >>1; } return result*flag; }
这里解释下为什么必须要使用long long 才能A掉,因为计算机中的数字用补码表示,所以负数能够表示的范围比较大,去符号变正数后超过int的表示范围,所以必须使用long long
相关文章推荐
- LeetCode 29. Divide Two Integers(除法)
- LeetCode - Divide Two Integers
- Leetcode 29. Divide Two Integers
- LeetCode Divide Two Integers 不使用除号取模乘号实现两数相除
- LeetCode-Divide Two Integers
- LeetCode - Divide Two Integers
- leetcode 29 divide two integers
- 【LeetCode】29. Divide Two Integers
- leetCode 29.Divide Two Integers (两整数相除) 解题思路和方法
- Leetcode-Divide Two Integers
- [leetcode]29. Divide Two Integers
- 【LeetCode】29. Divide Two Integers
- leetcode-29. Divide Two Integers
- LeetCode 29. Divide Two Integers
- leetcode第28题--Divide Two Integers
- leetcode 29 - Divide Two Integers
- LeetCode:29.Divide Two Integers[Medium]
- Leetcode||29. Divide Two Integers
- LeetCode:Divide Two Integers
- Leetcode---Divide Two Integers