unsigned divide(unsigned dividend, unsigned divisor) {
unsigned denom=divisor;
unsigned current = 1;
unsigned answer=0;
if ( denom > dividend)
return 0;
if ( denom == dividend)
return 1;
while (denom < dividend) {
denom <<= 1;
current <<= 1;
}
while (current!=0) {
if ( dividend >= denom) {
dividend -= denom;
answer |= current;
}
current >>= 1;
denom >>= 1;
}
return answer;
}
dW5zaWduZWQgZGl2aWRlKHVuc2lnbmVkIGRpdmlkZW5kLCB1bnNpZ25lZCBkaXZpc29yKSB7IAoKICAgIHVuc2lnbmVkIGRlbm9tPWRpdmlzb3I7CiAgICB1bnNpZ25lZCBjdXJyZW50ID0gMTsKICAgIHVuc2lnbmVkIGFuc3dlcj0wOwoKICAgIGlmICggZGVub20gPiBkaXZpZGVuZCkgCiAgICAgICAgcmV0dXJuIDA7CgogICAgaWYgKCBkZW5vbSA9PSBkaXZpZGVuZCkKICAgICAgICByZXR1cm4gMTsKCiAgICB3aGlsZSAoZGVub20gPCBkaXZpZGVuZCkgewogICAgICAgIGRlbm9tIDw8PSAxOwogICAgICAgIGN1cnJlbnQgPDw9IDE7CiAgICB9CgogICAgd2hpbGUgKGN1cnJlbnQhPTApIHsKICAgICAgICBpZiAoIGRpdmlkZW5kID49IGRlbm9tKSB7CiAgICAgICAgICAgIGRpdmlkZW5kIC09IGRlbm9tOwogICAgICAgICAgICBhbnN3ZXIgfD0gY3VycmVudDsKICAgICAgICB9CiAgICAgICAgY3VycmVudCA+Pj0gMTsKICAgICAgICBkZW5vbSA+Pj0gMTsKICAgIH0KCiAgICByZXR1cm4gYW5zd2VyOwp9Cg==