1. Ideas
If you use Int or long to add a large number, you must use string for storage.
2. Code
public class LargeNumAdd{ public static void main(String[] args) { String sum = "0"; for (int i = 1; i <= 2009; i++) { String temp = getStr(i); sum = getSum(sum, temp); } System.out.println("sum: " + sum); } public static String getSum(String a, String b) { if (a.length() > b.length()) { for (int i = b.length(); i < a.length(); i++) { b = ‘0‘ + b; } } else { for (int i = a.length(); i < b.length(); i++) { a = ‘0‘ + a; } } char array1[] = a.toCharArray(); char array2[] = b.toCharArray(); String sum = ""; int carrayIn = 0; for (int i = a.length() - 1; i >= 0; i--) { sum = getRemain(array1[i], array2[i], carrayIn) + sum; carrayIn = getCarry(array1[i], array2[i], carrayIn); } return sum; } public static String getRemain(char a, char b, int carrayIn) { int sum = (a - ‘0‘) + (b - ‘0‘) + carrayIn; String rem = sum % 10 + ""; return rem; } private static int getCarry(char a, char b, int carryIn) { int sum = (a - ‘0‘) + (b - ‘0‘) + carryIn; int carry = sum / 10; return carry; } public static String getStr(int N) { String s = ""; for (int i = 0; i < N; i++) { s += "1"; } return s; }}
Sum = 1 + 111 + 1111 +... + 1... 111.