Problem:
Divide two integers without using multiplication, division and mod operator.
Solutions:
The below two prgrams work.
Programs:
int divide(int dividend, int divisor) {
long long upper=abs((double) dividend);
long long lower=abs((double) divisor);
long long rv=0;
while(upper>=lower){
long long tempMulti=lower;
for(int i=0; upper>=tempMulti; ++i, tempMulti<<=1){
upper-=tempMulti;
rv+=1<<i;
}
}
return ((dividend^divisor)>>31) ? (-rv) : (rv);
}
int divide(int dividend, int divisor) {
long long upper=abs((double) dividend);
long long lower=abs((double) divisor);
long long rv=0;
while(upper>=lower){
long long tempMulti=lower;
for(int i=0; ; ++i, tempMulti<<=1){
if(upper<tempMulti){
upper-=(tempMulti>>1);
rv+=1<<(i-1);
break;
}
}
}
return ((dividend^divisor)>>31) ? (-rv) : (rv);
}