#include <stdio.h>
#include <limits.h>
int divide(int dividend, int divisor) {
if (dividend == INT_MIN && divisor == -1) return INT_MAX; // 溢出處理
// if (divisor == dividend) return 1;
int neg = (dividend ^ divisor) < 0;
//printf("%d ", neg);
unsigned int n = (dividend == INT_MIN) ? (unsigned int)INT_MAX + 1 : (dividend < 0) ? -dividend : dividend;
unsigned int d = (divisor == INT_MIN) ? (unsigned int)INT_MAX + 1 : (divisor < 0) ? -divisor : divisor;
int i = 0;
unsigned int quotient = 0;
while (i < 32 && n >= (d << i)) {
printf("%u %u %d\n", n
, d
<< i
, i
); ++i;
}
i--;
while (i >= 0) {
if (n >= (d << i)) {
quotient += (unsigned int)1 << i;
n -= d << i;
}
--i;
}
if (quotient > INT_MAX && neg == 0) return INT_MAX;
//if (quotient > INT_MAX && neg == 1) return INT_MIN;
//printf("%d ", quotient);
if (neg) return -quotient;
else return quotient;
}
int main(void) {
// your code goes here
int a = divide(-2147483648, 2);
//printf("%d ", a);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KCmludCBkaXZpZGUoaW50IGRpdmlkZW5kLCBpbnQgZGl2aXNvcikgewogICAgaWYgKGRpdmlkZW5kID09IElOVF9NSU4gJiYgZGl2aXNvciA9PSAtMSkgcmV0dXJuIElOVF9NQVg7IC8vIOa6ouWHuuiZleeQhgogICAgLy8gaWYgKGRpdmlzb3IgPT0gZGl2aWRlbmQpIHJldHVybiAxOwogICAgaW50IG5lZyA9IChkaXZpZGVuZCBeIGRpdmlzb3IpIDwgMDsKICAgIC8vcHJpbnRmKCIlZCAiLCBuZWcpOwoKICAgIHVuc2lnbmVkIGludCBuID0gKGRpdmlkZW5kID09IElOVF9NSU4pID8gKHVuc2lnbmVkIGludClJTlRfTUFYICsgMSA6IChkaXZpZGVuZCA8IDApID8gLWRpdmlkZW5kIDogZGl2aWRlbmQ7CiAgICB1bnNpZ25lZCBpbnQgZCA9IChkaXZpc29yID09IElOVF9NSU4pID8gKHVuc2lnbmVkIGludClJTlRfTUFYICsgMSA6IChkaXZpc29yIDwgMCkgPyAtZGl2aXNvciA6IGRpdmlzb3I7CiAgICBpbnQgaSA9IDA7CiAgICB1bnNpZ25lZCBpbnQgcXVvdGllbnQgPSAwOwogICAgd2hpbGUgKGkgPCAzMiAmJiBuID49IChkIDw8IGkpKSB7CiAgICAJcHJpbnRmKCIldSAldSAlZFxuIiwgbiwgZCA8PCBpLCBpKTsKICAgIAkrK2k7CiAgICB9CiAgICBpLS07CiAgICAKICAgIAogICAgd2hpbGUgKGkgPj0gMCkgewogICAgICAgIGlmIChuID49IChkIDw8IGkpKSB7CiAgICAgICAgICAgIHF1b3RpZW50ICs9ICh1bnNpZ25lZCBpbnQpMSA8PCBpOwogICAgICAgICAgICBuIC09IGQgPDwgaTsKICAgICAgICB9CiAgICAgICAgLS1pOwogICAgfQogICAgaWYgKHF1b3RpZW50ID4gSU5UX01BWCAmJiBuZWcgPT0gMCkgcmV0dXJuIElOVF9NQVg7CiAgICAvL2lmIChxdW90aWVudCA+IElOVF9NQVggJiYgbmVnID09IDEpIHJldHVybiBJTlRfTUlOOwogICAgLy9wcmludGYoIiVkICIsIHF1b3RpZW50KTsKICAgIGlmIChuZWcpIHJldHVybiAtcXVvdGllbnQ7CiAgICBlbHNlIHJldHVybiBxdW90aWVudDsKfQoKaW50IG1haW4odm9pZCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IGEgPSBkaXZpZGUoLTIxNDc0ODM2NDgsIDIpOwoJLy9wcmludGYoIiVkICIsIGEpOwoJcmV0dXJuIDA7Cn0K