#include <stdio.h>
int divide(int, int);
main()
{
int result = 1;
result = divide(17, 4);
printf("%d", result);
return 0;
}
int divide(int dividend, int divisor)
{
if (divisor == 1) return dividend;
if (divisor == -1) return -dividend;
int isPositive = 0;
if ((dividend > 0 && divisor > 0) || (dividend < 0 && divisor < 0)) {
isPositive = 1;
}
dividend = abs(dividend);
divisor = abs(divisor);
if (dividend == 0) return 0;
int count = 1;
int current = divisor;
while (current < dividend) {
count <<= 1;
current <<= 1;
}
int result = 0;
while (current >= divisor) {
while (current <= dividend){
dividend -= current;
result += count;
}
current >>= 1;
count >>= 1;
}
if (isPositive == 1) {
return result;
}
return -result;
}
leetcode 两个数相除,不用乘除和mode
最新推荐文章于 2020-10-20 11:32:08 发布