蓝桥杯基础BASIC-29题
题目
问题描述
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
输入格式
输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
输出格式
输出一行,表示a + b的值。
样例输入
20100122201001221234567890
2010012220100122
样例输出
20100122203011233454668012
代码
方法一:
package jichu;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
String a =sc.next();
String b =sc.next();
int c=0;
if(a.length()>=b.length()) {
c=a.length();
}else {
c=b.length();
}
int[] arr1= new int[c+1];
int[] arr2= new int[c+1];
int[] arr= new int[c+1];
int r=0;
//截取字符串中的数字
int n=0;
for(int i=a.length()-1;i>=0;i--) {
arr1[n]=Integer.parseInt(a.substring(i, i+1));
n++;
}
int m=0;
for(int i=b.length()-1;i>=0;i--) {
arr2[m]=Integer.parseInt(b.substring(i,i+1));
m++;
}
//计算是否要进位
for(int j=0;j<c+1;j++) {
if(arr1[j]+arr2[j]+r<10) {
arr[j]=arr1[j]+arr2[j]+r;
r=0;
}else {
arr[j]=arr1[j]+arr2[j]+r-10;
r=1;
}
}
//进位的值
if(arr[arr.length-1]==1) {
for(int j=arr.length-1;j>=0;j--){
System.out.print(arr[j]);
}
}
//不进位的值
if(arr[arr.length-1]==0) {
for(int j=arr.length-2;j>=0;j--){
System.out.print(arr[j]);
}
}
}
}
方法二:
package jichu;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
BigInteger a1 = new BigInteger(a);
BigInteger b1 = new BigInteger(b);
BigInteger c = a1.add(b1);
System.out.println(c);
}
}