#include <stdio.h>
int intDiv(int num, int den) {
int count = 0;
if (den <= 0)
return -1; /* Div not possible */
while (num >= den) {
num -= den;
count++;
}
return count;
}
int divide(int n, int d) {
if(d <= 0)
return -1;
int k = d;
int i, c, index=1;
c = 0;
while(n > d){
d <<= 1;
index <<= 1;
}
while(1){
if(k > n)
return c;
if(n >= d){
c |= index;
n -= d;
}
index >>= 1;
d >>= 1;
}
return c;
}
int main()
{
printf("%d %d %d %d\n", intDiv
(4,5), intDiv
(13,5), intDiv
(20,4), intDiv
(3,0)); printf("%d %d %d %d\n", divide
(4,5), divide
(13,5), divide
(20,4), divide
(3,0));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgaW50RGl2KGludCBudW0sIGludCBkZW4pIHsKICAgIGludCBjb3VudCA9IDA7CiAgICBpZiAoZGVuIDw9IDApCiAgICAgICAgcmV0dXJuIC0xOyAvKiBEaXYgbm90IHBvc3NpYmxlICovCiAgICB3aGlsZSAobnVtID49IGRlbikgewogICAgICAgIG51bSAtPSBkZW47CiAgICAgICAgY291bnQrKzsKICAgIH0KICAgIHJldHVybiBjb3VudDsKfQoKaW50IGRpdmlkZShpbnQgbiwgaW50IGQpIHsKICAgIGlmKGQgPD0gMCkKICAgICAgICByZXR1cm4gLTE7CiAgICBpbnQgayA9IGQ7CiAgICBpbnQgaSwgYywgaW5kZXg9MTsKICAgIGMgPSAwOwogICAgd2hpbGUobiA+IGQpewogICAgICAgIGQgPDw9IDE7CiAgICAgICAgaW5kZXggPDw9IDE7CiAgICB9CiAgICB3aGlsZSgxKXsKICAgICAgICBpZihrID4gbikKICAgICAgICAgICAgcmV0dXJuIGM7CiAgICAgICAgaWYobiA+PSBkKXsKICAgICAgICAgICAgYyB8PSBpbmRleDsKICAgICAgICAgICAgbiAtPSBkOyAgICAgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgaW5kZXggPj49IDE7CiAgICAgICAgZCA+Pj0gMTsKICAgIH0KICAgIHJldHVybiBjOwp9CgppbnQgbWFpbigpCnsKICAgIHByaW50ZigiJWQgJWQgJWQgJWRcbiIsIGludERpdig0LDUpLCBpbnREaXYoMTMsNSksIGludERpdigyMCw0KSwgaW50RGl2KDMsMCkpOwogICAgcHJpbnRmKCIlZCAlZCAlZCAlZFxuIiwgZGl2aWRlKDQsNSksIGRpdmlkZSgxMyw1KSwgZGl2aWRlKDIwLDQpLCBkaXZpZGUoMywwKSk7CgogICAgcmV0dXJuIDA7Cn0=