import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String res=""; String s1=in.nextLine(); String s2=in.nextLine(); int a=1,n1=s1.length(),n2=s2.length(),carry=0,temp=0; while(n1-a>=0||n2-a>=0){ if(n1-a>=0&&n2-a>=0){ temp=Integer.parseInt(s1.charAt(n1-a)+"")+Integer.parseInt(s2.charAt(n2-a)+"")+carry; }else if(n1-a>=0){ temp=Integer.parseInt(s1.charAt(n1-a)+"")+carry; }else{ temp=Integer.parseInt(s2.charAt(n2-a)+"")+carry; } res=temp%10+res; carry=temp/10; a++; } if(carry!=0){ res=carry+res; } System.out.println(res); } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case char[] str1 = in.nextLine().toCharArray(); char[] str2 = in.nextLine().toCharArray(); int len1 = str1.length-1; int len2 = str2.length-1; String res = ""; int shi = 0; while(true){ int zhi = 0; if(len1>=0 && len2>=0){ zhi = str1[len1] - '0' + str2[len2] - '0' + shi; }else if(len1>=0){ zhi = str1[len1] - '0' + shi; }else if(len2>=0){ zhi = str2[len2] - '0' + shi; }else{ break; } int ge = zhi%10; shi = zhi/10; res = ge + res; len1--; len2--; } if(shi == 1){ res = 1 + res; } System.out.println(res); } } }
import java.util.*; import java.io.*; import java.math.BigDecimal; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws Exception { BufferedReader bu = new BufferedReader(new InputStreamReader(System.in) ); // 注意 hasNext 和 hasNextLine 的区别 // BigDecimal a = in.nextBigDecimal(); // BigDecimal b = in.nextBigDecimal(); // System.out.println(a.add(b).toString()); String a = bu.readLine(); String b = bu.readLine(); String[] arrA = a.split(""); String[] arrB = b.split(""); int jin = 0; StringBuilder str = new StringBuilder(); if(a.length()>b.length()){ cal(arrA, arrB, jin, a.length() - 1, b.length() - 1, str); }else{ cal(arrB, arrA, jin, b.length() - 1, a.length() - 1, str); } bu.close(); } public static void cal(String[] arrA, String[] arrB, int jin, int i, int j, StringBuilder str) { if (i < 0 && jin == 0) { System.out.println(str.reverse()); } else { int a = (i< 0) ? 0:Integer.parseInt(arrA[i]); int b = (j< 0) ? 0:Integer.parseInt(arrB[j]); Integer count = a + b +jin; if (count > 9) { jin = count / 10; }else{ jin =0; } str.append(count%10); cal(arrA, arrB, jin, i-1, j-1, str); } } }可以用递归的方式,满10进1,加入下一次计算
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String a = in.next(); String b = in.next(); while (a.length() > b.length()) { b = "0" + b; } while (b.length() > a.length()) { a = "0" + a; } String result = ""; int cin = 0; for (int i = a.length()-1; i >= 0; i--) { int res = a.charAt(i)+b.charAt(i)+cin-96; cin = res / 10; result = res % 10 + result; } if (cin == 0) { System.out.print(result); } else { System.out.print(cin+result); } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String a = in.nextLine(), b = in.nextLine(); int m = a.length(), n = b.length(); StringBuilder sb = new StringBuilder(); int i = m - 1, j = n - 1; //判断两个数相加是否大于10,如果a,b长度相等的情况下最高位还要加1 boolean carry = false; while ( i >= 0 || j >= 0 || carry) { //判断x是否大于a的lenght,如果大于则取0 int x = i >= 0 ? a.charAt(i--) - '0' : 0; //判断y是否大于b的lenght,如果大于则取0 int y = j >= 0 ? b.charAt(j--) - '0' : 0; int cur = x + y; //判断上次获得的数是否大于10,大于则加1 if ( carry ) { cur ++; carry = false; } if ( cur >= 10 ) { cur %= 10; carry = true; } sb.append(cur); } System.out.println(sb.reverse().toString()); } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); char[] s = new StringBuilder(in.next()).reverse().toString().toCharArray(); char[] ss = new StringBuilder(in.next()).reverse().toString().toCharArray(); StringBuilder sb = new StringBuilder(); int jw = 0; //进位初始化为0 for(int i = 0;i<Math.max(s.length,ss.length);i++){ if(i<s.length && i<ss.length){ int temp = s[i]-'0' + ss[i] -'0' + jw; jw = temp/10; sb.append(temp%10); }else if(i <s.length){ int temp = s[i] -'0' + jw; jw = temp/10; sb.append(temp%10); }else if(i <ss.length){ int temp = ss[i] -'0' + jw; jw = temp/10; sb.append(temp%10); } } if(jw != 0){ sb.append(jw); } System.out.println(sb.reverse()); } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); StringBuilder str1 = new StringBuilder(in.nextLine()).reverse(); StringBuilder str2 = new StringBuilder(in.nextLine()).reverse(); StringBuilder result = new StringBuilder(); int len = Math.max(str1.length(), str2.length()); int flag = 0;//表示进位的标志 for (int i = 0; i < len; i++) { int a = 0, b = 0; if (i < str1.length()) { a = Integer.parseInt(str1.charAt(i) + ""); } if (i < str2.length()) { b = Integer.parseInt(str2.charAt(i) + ""); } int sum = a + b + flag; flag = sum / 10;//重置进位 result.append(sum % 10); } if (flag != 0) { result.append(flag); } System.out.println(result.reverse()); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String a = in.nextLine(); String b = in.nextLine(); char[] reversedA = new StringBuilder(a).reverse().toString().toCharArray(); char[] reversedB = new StringBuilder(b).reverse().toString().toCharArray(); if (a.length() > b.length()) { char[] temp = new char[a.length()]; System.arraycopy(reversedB, 0, temp, 0, b.length()); for (int i = b.length(); i < a.length(); i++) { temp[i] = '0'; } reversedB = temp; } else { char[] temp = new char[b.length()]; System.arraycopy(reversedA, 0, temp, 0, a.length()); for (int i = a.length(); i < b.length(); i++) { temp[i] = '0'; } reversedA = temp; } StringBuilder result = new StringBuilder(); boolean carry = false; for (int i = 0; i < reversedA.length; i++) { int sum = reversedA[i] - '0' + reversedB[i] - '0'; if (carry) { sum++; carry = false; } if (sum > 9) { carry = true; sum -= 10; } result.append(sum); } if (carry) { result.append(1); } System.out.println(result.reverse().toString()); } }
import java.util.Scanner; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = br.readLine(); String line2 = br.readLine(); StringBuilder sb = new StringBuilder(); StringBuilder sb1 = new StringBuilder(line); StringBuilder sb2 = new StringBuilder(line2); // 变为倒序 String number1 = sb1.reverse().toString(); String number2 = sb2.reverse().toString(); // 计算每个位上的和 // 进位的数字 int jinwei = 0; int max = Math.max(line.length(), line2.length()); for (int i = 0; i < max; i++) { int a = 0; if (i < line.length()) { a = Integer.parseInt(number1.charAt(i) + ""); } int b = 0; if (i < line2.length()) { b = Integer.parseInt(number2.charAt(i) + ""); } // 计算各位之和 int sum = a + b + jinwei; // 计算进位的值 jinwei = sum / 10; // 计算进位后的值 sb.append(sum % 10); } // 补充最后的进位数字 if (jinwei != 0) { sb.append(jinwei); } System.out.println(sb.reverse().toString()); } }
import java.util.*; import java.math.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 BigInteger num1=new BigInteger(in.nextLine()); BigInteger num2=new BigInteger(in.nextLine()); num1=num1.add(num2); System.out.print(num1); } }
import java.util.Scanner; import java.math.BigDecimal; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 BigDecimal a = new BigDecimal(in.next()); BigDecimal b = new BigDecimal(in.next()); System.out.println(a.add(b)); } }
import java.util.*; import java.io.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws Exception{ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String line; while((line = buf.readLine())!=null&&line.length()>0){ //因为数据的长度可以最长达到1万个字符,因此不能用整型保存,应该用字符串保存相加结果 System.out.println(add(line.trim(), buf.readLine().trim())); //trim表示去除字符串两端的空格 } } private static String add(String s1, String s2){ StringBuilder res = new StringBuilder(); //初始化一个可变字符串 int n = s1.length()-1; int m = s2.length()-1; int carry = 0;//进位 while(n>=0||m>=0){ //从两个字符串最后一位开始相加 char c1 = n>=0?s1.charAt(n--):'0'; char c2 = m>=0?s2.charAt(m--):'0'; int sum = (c1-'0')+(c2-'0')+carry; res.append(sum%10); carry = sum/10; } if(carry==1) res.append(carry); return res.reverse().toString(); //转换成字符串String类型 } }
import java.util.*; import java.math.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case BigDecimal a = new BigDecimal(in.next()); BigDecimal b = new BigDecimal(in.next()); System.out.println(a.add(b)); } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String a = in.nextLine(), b = in.nextLine(); int m = a.length(), n = b.length(); StringBuilder sb = new StringBuilder(); int i = m-1, j = n-1; boolean carry = false; while ( i >= 0 || j >= 0 || carry ) { int x = i >=0 ? a.charAt(i--)-'0' : 0; int y = j >= 0 ? b.charAt(j--)-'0' : 0; int cur = x + y; if ( carry ) { cur ++; carry = false; } if ( cur >= 10 ) { cur %= 10; carry = true; } sb.append(cur); } System.out.println(sb.reverse().toString()); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s1 = sc.nextLine(); String s2 = sc.nextLine(); // s1、s2的最大下标 int m = s1.length() - 1; int n = s2.length() - 1; // 进位 int carry = 0; // 逆序遍历相加 StringBuilder builder = new StringBuilder(); while (m >= 0 || n >= 0) { char c1 = m >= 0 ? s1.charAt(m--) : '0'; char c2 = n >= 0 ? s2.charAt(n--) : '0'; int sum = (c1 - '0') + (c2 - '0') + carry; builder.append(sum % 10); carry = sum / 10; } // 事实上carry只可能为0或1 if (carry != 0) { builder.append(carry); } // 反转输出 System.out.println(builder.reverse().toString()); } }
import java.io.*; import java.math.BigInteger; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s; while ((s = br.readLine()) != null) { BigInteger num1 = new BigInteger(s); BigInteger num2 = new BigInteger(br.readLine()); System.out.println(num1.add(num2)); } } }