一个比较好的chromecast的测评# PDA - 掌中宝
i*7
1 楼
好像之前有人问过怎么解决overflow的问题。。
同求问一下。
======该死的分割线=======
好吧,终于过了leetcode的所有test cases了。。
不知道有没有别的同志给其他办法。
我就先贴一下我的代码吧
int divide(int aa, int bb) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
bool flag = false;
long long int a = aa;
long long int b = bb;
if(a < 0)
{
flag = !flag;
a = ~a + 1;
}
if(b < 0){
flag = !flag;
b = ~b + 1;
}
int digitA = log2(a);
int digitB = log2(b);
int q = 0;
int msb = (digitA - digitB + 1);
for(int i = msb; i >= 0; i--)
{
if(((b << i) > a) || ((a >> i) < b))
{
continue;
}
q |= (1 << i);
a -= (b << i);
}
if(flag){
q = ~q + 1;
}
return q;
}
同求问一下。
======该死的分割线=======
好吧,终于过了leetcode的所有test cases了。。
不知道有没有别的同志给其他办法。
我就先贴一下我的代码吧
int divide(int aa, int bb) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
bool flag = false;
long long int a = aa;
long long int b = bb;
if(a < 0)
{
flag = !flag;
a = ~a + 1;
}
if(b < 0){
flag = !flag;
b = ~b + 1;
}
int digitA = log2(a);
int digitB = log2(b);
int q = 0;
int msb = (digitA - digitB + 1);
for(int i = msb; i >= 0; i--)
{
if(((b << i) > a) || ((a >> i) < b))
{
continue;
}
q |= (1 << i);
a -= (b << i);
}
if(flag){
q = ~q + 1;
}
return q;
}