题目链接:A+B Problem
题目描述
输入两个整数 a , b a, b a,b,输出它们的和( ∣ a ∣ , ∣ b ∣ ≤ 10 9 |a|,|b| \le {10}^9 ∣a∣,∣b∣≤109)。
注意
- Pascal 使用
integer
会爆掉哦! - 有负数哦!
- C/C++ 的 main 函数必须是
int
类型,而且 C 最后要return 0
。这不仅对洛谷其他题目有效,而且也是 NOIP/CSP/NOI 比赛的要求!
好吧,同志们,我们就从这一题开始,向着大牛的路进发。
任何一个伟大的思想,都有一个微不足道的开始。
输入格式
两个以空格分开的整数。
输出格式
一个整数。
样例 #1
样例输入 #1
20 30
样例输出 #1
50
import java.util.Scanner;
public class Main {
public static int[] a = new int[501];
public static int[] b = new int[501];
public static int[] c = new int[501];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//输入a和b,读入的是字符串,逆序存入数组
//输入a
int lena = init(a, scanner);
//输入b
int lenb = init(b, scanner);
//计算相加的位数长度,以最大的为准
int lenc = Math.max(lena, lenb);
for (int i = 0; i < lenc; i++) {
c[i] += a[i] + b[i];
c[i + 1] = c[i] / 10;
c[i] %= 10;
}
//除去数字头部的0,第二个条件防止两个0相加的情况
while (c[lenc] == 0 && lenc > 0) {
lenc--;
}
//逆序数组,输出结果
for (int i = lenc; i >= 0; i--) {
System.out.print(c[i]);
}
}
public static int init(int[] arr, Scanner scanner) {
String s = scanner.next();
int len = s.length();
for (int i = 0; i < len; i++) {
arr[len - 1 - i] = s.charAt(i) - '0';
}
return len;
}
}