fork download
  1. #include <stdio.h>
  2. #include <limits.h>
  3. #include <stdbool.h>
  4. #include <stdlib.h>
  5.  
  6. int divide(int dividend, int divisor) {
  7. // Edge case: overflow (use INT_MIN and INT_MAX in <limits.h>)
  8. if (dividend == INT_MIN && divisor == -1) return INT_MAX;
  9.  
  10. // Sign (use ^ to calculate XOR)
  11. bool negative = (dividend < 0) ^ (divisor < 0);
  12.  
  13. // Work with positive values (use llabs when variable is type long long)
  14. long long a = llabs((long long)dividend);
  15. long long b = llabs((long long)divisor);
  16.  
  17. long long result = 0;
  18. while (a >= b) { // subtract divisor until what's left < divisor
  19. a -= b;
  20. result++;
  21. }
  22.  
  23. // Apply sign
  24. return negative ? -result : result;
  25. }
  26.  
  27. int main() {
  28. int dividend, divisor;
  29. scanf("%d %d", &dividend, &divisor);
  30. printf("%d\n", divide(dividend, divisor));
  31. return 0;
  32. }
  33.  
Success #stdin #stdout 0s 5312KB
stdin
4 5
stdout
0