private String stringAddition(String s1, String s2) { assert(s1.length() == s2.length()); char[] result = new char[s2.length()]; for (int i = 0; i < s2.length(); i++) result[i] = '0'; int c = 0; for (int i = s1.length() - 1; i >= 0; i--) { int t = c + dig(s1.charAt(i)) + dig(s2.charAt(i)); result[i] = cdig(t % 10); c = t / 10; } assert(c == 0); return new String(result); }
private String stringSubtraction(String s1, String s2) { // i, t, c : integer; assert(s1.length() == s2.length()); char[] result = new char[s2.length()]; for (int i = 0; i < s2.length(); i++) result[i] = '0'; int c = 0; for (int i = s1.length() - 1; i >= 0; i--) { int t = c + (dig(s1.charAt(i)) - dig(s2.charAt(i))); if (t < 0) { t = t + 10; if (i == 0) throw new Error("internal logic error"); else s1 = replaceChar(s1, i-1, cdig(dig(s1.charAt(i-1))-1)); } result[i] = cdig(t); } assert(c == 0); return new String(result); }
for (int j = s1.length() - 1; j >= 0; j--) { t = c + (dig(s1.charAt(j)) * dig(s2.charAt(i))); s[i] = insert(String.valueOf(cdig(t % 10)), s[i], 0); c = t / 10; s[i] = insert(String.valueOf(cdig(t % 10)), s[i], 0); c = t / 10; for (int j = 0; j < s.length; j++) c = c + dig(s[j].charAt(i)); res = insert(String.valueOf(cdig(c %10)), res, 0); c = c / 10;
private String stringAddition(String s1, String s2) { assert(s1.length() == s2.length()); char[] result = new char[s2.length()]; for (int i = 0; i < s2.length(); i++) result[i] = '0'; int c = 0; for (int i = s1.length() - 1; i >= 0; i--) { int t = c + dig(s1.charAt(i)) + dig(s2.charAt(i)); result[i] = cdig(t % 10); c = t / 10; } assert(c == 0); return new String(result); }
private String stringSubtraction(String s1, String s2) { // i, t, c : integer; assert(s1.length() == s2.length()); char[] result = new char[s2.length()]; for (int i = 0; i < s2.length(); i++) result[i] = '0'; int c = 0; for (int i = s1.length() - 1; i >= 0; i--) { int t = c + (dig(s1.charAt(i)) - dig(s2.charAt(i))); if (t < 0) { t = t + 10; if (i == 0) throw new Error("internal logic error"); else s1 = replaceChar(s1, i-1, cdig(dig(s1.charAt(i-1))-1)); } result[i] = cdig(t); } assert(c == 0); return new String(result); }
for (int j = s1.length() - 1; j >= 0; j--) { t = c + (dig(s1.charAt(j)) * dig(s2.charAt(i))); s[i] = insert(String.valueOf(cdig(t % 10)), s[i], 0); c = t / 10; s[i] = insert(String.valueOf(cdig(t % 10)), s[i], 0); c = t / 10; for (int j = 0; j < s.length; j++) c = c + dig(s[j].charAt(i)); res = insert(String.valueOf(cdig(c %10)), res, 0); c = c / 10;