java题目 HJ57 高精度整数加法
描述
输入两个用字符串 str 表示的整数,求它们所表示的数之和。
数据范围: 1 \le len(str) \le 10000 \1≤len(str)≤10000
输入描述:
输入两个字符串。保证字符串只含有'0'~'9'字符
输出描述:
输出求和后的结果
示例1
输入:
9876543210 1234567890
输出:
11111111100
1 import java.util.Scanner; 2 import java.math.BigInteger; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner scan = new Scanner(System.in); 7 while (scan.hasNext()) { 8 String s1 = scan.next(); 9 String s2 = scan.next(); //输入两个数 10 disp(s1, s2); 11 } 12 } 13 14 public static void disp(String s1, String s2) { 15 int m = s1.length() -1; 16 int n = s2.length() -1; 17 StringBuffer sf = new StringBuffer(); 18 int carry = 0; //进位使用 19 while(m >=0 || n >=0) { 20 char c1 = m >= 0 ? s1.charAt(m--) : '0'; //取字符串最后一位相加,当字符串没有后用‘0’替换 21 char c2 = n >= 0 ? s2.charAt(n--) : '0'; 22 int number = c1-'0' + c2 -'0' + carry; //末尾两位字符相加的和 23 sf.append(number % 10); //当前末尾相加后的值 24 carry = number / 10; //进位的值 25 } 26 if(carry == 1) //最后的进位为1,则添加1位 27 sf.append(carry); 28 System.out.println(sf.reverse()); //字符串倒置后输出即为和 29 } 30 }
方法二
java 大整数运算
1 import java.util.Scanner; 2 import java.math.BigInteger; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner scan = new Scanner(System.in); 7 while (scan.hasNext()) { 8 String s1 = scan.next(); 9 String s2 = scan.next(); //输入两个数 10 BigInteger a = new BigInteger(s1); //将字符串转成大整数 11 BigInteger b = new BigInteger(s2); 12 System.out.println(a.add(b)); //大整数相加 13 } 14 } 15 }