@@ -0,0 +1,1138 @@
+package test;%0A%0Apublic class Test %7B%0A  public static int negate(int num) %7B%0A    return (~num) + 1;%0A  %7D%0A%0A  public static int abs(int num) %7B%0A    return (num %3C 0) ? negate(num) : num;%0A  %7D%0A%0A  public static int add(int a, int b) %7B%0A    return a + b;%0A  %7D%0A%0A  public static int subtract(int a, int b) %7B%0A    return a + negate(b);%0A  %7D%0A%0A  public static int multiply(int a, int b) %7B%0A    if (a == 0 %7C%7C b == 0) return 0;%0A    boolean isPos = a %3E 0 && b %3E 0 %7C%7C a %3C 0 && b %3C 0;%0A    a = abs(a);%0A    b = abs(b);%0A    int product = 0; int i = 0;%0A    while (b != 0) %7B%0A      if ((b & 0x1) == 1) %7B%0A        product += a %3C%3C i;%0A      %7D%0A      i++;%0A      b %3E%3E%3E= 1;%0A    %7D%0A    return isPos ? product : negate(product);%0A  %7D%0A%0A  // Division is slower than one in CTCI%0A  public static int divide(int a, int b) %7B%0A    if (b == 0) throw new IllegalArgumentException();%0A    if (a == 0) return 0;%0A    if (b == 1) return a;%0A    boolean isPos = a %3E 0 && b %3E 0 %7C%7C a %3C 0 && b %3C 0;%0A    a = abs(a);%0A    b = abs(b);%0A    int res = 0; int t = 0;%0A    while (t %3E= 0) %7B%0A      t = multiply(b, res + 1);%0A      if (t %3E a) return res;%0A      res++;%0A    %7D%0A    return isPos ? res : negate(res);%0A  %7D%0A%7D%0A

add solutions