用long long来避免整数越界
class Solution {
public:int divide(int dividend, int divisor) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i,pi = 0;
long long tdividend = dividend, tdivisor = divisor;
bool flag = true;
if(tdividend<0){
flag = !flag;
tdividend = -tdividend;
}
if(tdivisor<0){
flag = !flag;
tdivisor = -tdivisor;
}
for(int i=1;i<32;i++){
if((tdivisor<<i)>tdividend)
break;
pi = i;
}
long long ans = 0;
for(int i = pi;i>=0;i--){
if(tdividend>=(tdivisor<<i)){
ans += 1<<i;
tdividend -= (tdivisor<<i);
}
}
if(flag==false)
ans = -ans;
return ans;
}
};