Interview Question
Country: India
Take the inputs as string and store them into integer arrays and perform addition something like below:
public class SumOfLargeNumber {
public static void main(String[] args) {
String a = "111111111111";
String b = "22222222222222";
int i = 0;
int firstInputLength = a.length();
int secondInputLength = b.length();
int sizeOfResult = firstInputLength > secondInputLength ? firstInputLength: secondInputLength;
int result[] = new int[sizeOfResult + 1];
int input1[] = new int[sizeOfResult];
int input2[] = new int[sizeOfResult];
while (i < firstInputLength) {
input1[sizeOfResult - i - 1] = Character.getNumericValue((a.charAt(firstInputLength - i - 1)));
i++;
}
i = 0;
while (i < secondInputLength) {
input2[sizeOfResult - i - 1] = Character.getNumericValue(b.charAt(secondInputLength - i - 1));
i++;
}
sumOfInputs(input1,input2,result);
}
private static void sumOfInputs(int[] input1, int[] input2, int[] result) {
int carry=0;
int sizeOfInputs=input1.length;
for(int i=sizeOfInputs;i>0;i--){
int sum = input1[i-1]+input2[i-1]+carry;
result[i]=sum%10;
if(sum/10>10)
carry=1;
else
carry=0;
}
result[0]=carry;
for(int i=0;i<=sizeOfInputs;i++)
System.out.print(result[i]);
}
}
public class CalculateLongIntegers {
public static void main(String[] args){
String s1 = "123456278798238093532765432662476427646456353425635454854";
String s2 = "1234562787982380935327654326624764276464563534248758758756";
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
int[] c3;
c3 = add(c1, c2);
if(c3[0] != 0){
System.out.print(c3[0]);
}
for(int i =1; i< c3.length; i++){
System.out.print(c3[i]);
}
}
private static int[] add(char[] c1, char[] c2) {
int l1 = c1.length;
int l2 = c2.length;
int len = l1 > l2 ? l1: l2;
int[] result = new int[len+1];
int i = c1.length-1;
int j = c2.length-1;
int carry = 0;
while(i >= 0 &&j >=0){
result[len] = (c1[i] - '0' + c2[j] - '0' +carry) % 10;
carry = (c1[i]-'0' + c2[j]-'0' + carry)/10;
i--;
j--;
len--;
}
while(i>=0){
result[len] = (c1[i] -'0' + carry) %10;
carry = (c1[i] -'0'+ carry) /10;
i--;
len--;
}
while(j>=0){
result[len] = (c1[j]-'0' + carry) %10;
carry = (c1[j]-'0' + carry) /10;
j--;
len--;
}
return result;
}
}
public static int [] add(String a, String b){
char [] chs_a = a.toCharArray();
char [] chs_b = b.toCharArray();
int m = chs_a.length>=chs_b.length? chs_a.length:chs_b.length;
int [] result = new int [m+1];
int carry = 0;
int i = chs_a.length-1, j = chs_b.length-1;
while (i>=0&&j>=0){
result [m--] = ((chs_a[i]-'0') + (chs_b[j]-'0') + carry) %10;
carry = ((chs_a[i]-'0') + (chs_b[j]-'0') + carry)/10;
i--;
j--;
}
while (i>=0){
result [m--] = (chs_a[i] -'0' + carry)%10;
carry = (chs_a[i] -'0'+ carry)/10;
i--;
}
while (j>=0){
result [m--] = (chs_b[j] - '0'+ carry)%10;
carry = (chs_b[j] -'0'+ carry)/10;
j--;
}
if (carry!=0){
result [m--] = carry;
}
return result;
}
Just store these numbers in an array and add two numbers by performing addition on cells....like -
- Ajeet January 18, 2014