importjava.util.Scanner;publicclassLargerIntegerAdd{publicstaticvoidmain(String[]args){String[]strs=newString[2];Scannersc=newScanner(System.in);intn=sc.nextInt();intk=1;...
import java.util.Scanner;
public class LargerIntegerAdd {
public static void main(String[] args) {
String[] strs = new String[2];
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = 1;
for(int j=1; j <= n ;j++) {
for (int i = 0; i < strs.length; i++) {
if (sc.hasNext()) {
strs[i] = sc.next();
}
}
System.out.println("Case " + (k++) + ":");
System.out.println(strs[0] + " + " + strs[1] + " = " + compute(strs));
System.out.println();
}
}
private static String compute(String[] strs) {
String result = "";
byte[] b1 = strs[0].getBytes();
byte[] b2 = strs[1].getBytes();
int temp = 0;
if(b1.length <= b2.length) {
int[] sum = new int[b2.length + 1];
boolean flag = false;
for(int i=b2.length - 1; i >=b2.length - b1.length ; i--) {
if(flag) {
temp = b1[i -(b2.length - b1.length)] + b2[i] + 1 - 2* '0';
}else {
temp = b1[i -(b2.length - b1.length)] + b2[i] - 2* '0';
}
flag = handOverTen(temp,sum,i);
}
for(int i= b2.length - b1.length - 1; i >= 0; i--) {
if(flag) {
temp = b2[i] + 1 - '0';
}else {
temp = b2[i ] - '0';
}
flag = handOverTen(temp,sum,i);
}
handTheTop(flag,sum);
//showRestul(sum,j);
if(sum[0] != 0) {
result += sum[0];
}
for(int i=1; i < sum.length;i++) {
result += sum[i];
}
return result;
}else {
boolean flag = false;
int[] sum = new int[b1.length + 1];
for(int i=b1.length-1; i >=b1.length - b2.length; i--) {
if(flag) {
temp = b1[i] + b2[i - (b1.length - b2.length)] + 1 - 2* '0';
}else {
temp = b1[i] + b2[i - (b1.length - b2.length)] - 2* '0';
}
flag = handOverTen(temp,sum,i);
}
for(int i= b1.length - b2.length - 1; i >= 0; i--) {
if(flag) {
temp = b1[i] + 1 - '0';
}else {
temp = b1[i] - '0';
}
flag = handOverTen(temp,sum,i);
}
handTheTop(flag,sum);
//showRestul(sum,j);
if(sum[0] != 0) {
result += sum[0];
}
for(int i=1; i < sum.length;i++) {
result += sum[i];
}
return result;
}
}
private static void handTheTop(boolean flag, int[] sum) {
if(flag) {
sum[0] = 1;
}
}
private static boolean handOverTen(int temp, int[] sum,int i) {
if(temp >= 10) {
temp = temp - 10;
sum[i + 1] = temp;
return true;
}
sum[i + 1] = temp;
return false;
}
}
展开