输入两个超长整数,求其运算结果
输入样例:999999999 1(string类型)
输出样例:1000000000
方法一:
API new BigInteger().add();
方法二:个各位依次求解
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s1=sc.next();
String s2=sc.next();
out(s1,s2);
}
sc.close();
}
public static void out(String s1,String s2){
StringBuffer sb1=new StringBuffer(s1);
StringBuffer sb2=new StringBuffer(s2);
StringBuffer res=new StringBuffer();
String ss1=sb1.reverse().toString();
String ss2=sb2.reverse().toString();
char[] arr1=ss1.toCharArray();
char[] arr2=ss2.toCharArray();
//为了防止脚标越界,分出较长数组,和较短数组
if(arr1.length>arr2.length){
char[] t=arr1;
arr1=arr2;//min
arr2=t;//max
}
//int maxindex=arr1.length>arr2.length?arr1.length:arr2.length;
//int minindex=arr1.length>arr2.length?arr2.length:arr1.length;
int k=0;// 向前进的数
int result=0;
for(int i=0;i<arr1.length;i++){
int k1=Integer.parseInt(arr1[i]+"");
int k2=Integer.parseInt(arr2[i]+"");
int sum=k1+k2+k;
result=sum%10;
k=sum/10;
res.append(result);
}
for(int i=arr1.length;i<arr2.length;i++){
int k2=Integer.parseInt(arr2[i]+"");
int sum=k2+k;
result=sum%10;
k=sum/10;
res.append(result);
}
if(k!=0){//最后的K有可能为0
res.append(k);
}
System.out.print(res.reverse().toString());
}}