TopCoder SRM 522 Div1 Medium: CorrectMultiplication

コード

public class CorrectMultiplication {

	public long getMinimum(int a, int b, int c) {
		if (a > b) {
			int bb = b;
			b = a;
			a = bb;
		}

		long ans = Long.MAX_VALUE;
		for (int A = 1; A < 1000000; A++) {
			long B = c / A;
			for (int d = -5; d <= 5; d++) {
				long C = (long) A * (B + d);

				if (C == 0) {
					continue;
				}

				long da = Math.abs(A - a);
				long db = Math.abs(B + d - b);
				long dc = Math.abs(C - c);

				ans = Math.min(da + db + dc, ans);
			}
		}
		return ans;
	}
}