描述
This is a very easy problem.
You just need to calculate A plus B.
BUT, here is a question.
How to calculate 1020+1030?
输入
The input has one line with 2 numbers, A and B.Both 0<= A and B <= 10502.
输出
The input has one line with 1 number n whith means n = A+B.
输入样例 1
1 1
输出样例 1
2
输入样例 2
18446744073709551616 1
输出样例 2
18446744073709551617
提示
Oh no,the number is too large!!!
来源
NEEPU_ACM_2017_训练赛(2)
代码
1.Cpp实现
#include <cstdio>
#include <cstring>
using namespace std;
void bigintegerPlus(char *plus1, char *plus2, int *resPlus){ // 执行大数相加
int iPlus, jPlus, kPlus = 0;
int tempPlus = 0;
int tempPlus1;
int tempPlus2;
for(iPlus = strlen(plus1) - 1, jPlus = strlen(plus2) - 1; iPlus >= 0 || jPlus >= 0; iPlus--, jPlus--){ // 从每个数组的末尾往前算
tempPlus1 = tempPlus2 = 0;
if(iPlus >= 0) tempPlus1 = plus1[iPlus] - '0'; // 确保运算时不会造成数组越界
if(jPlus >= 0) tempPlus2 = plus2[jPlus] - '0';
resPlus[kPlus] = (tempPlus1 + tempPlus2 + tempPlus) % 10;
tempPlus = (tempPlus1 + tempPlus2 + tempPlus) / 10;
kPlus++;
}
if(tempPlus != 0){
resPlus[kPlus] = tempPlus;
kPlus++;
}
for(iPlus = kPlus - 1; iPlus >= 0; iPlus--) printf("%d", resPlus[iPlus]);
}
int main(){
char num1[1000] = {0}, num2[1000] = {0};
scanf("%[0-9] %[0-9]", num1, num2);
int resPlus[1001] = {0};
bigintegerPlus(num1, num2, resPlus); // 调用大数相加
return 0;
}
2.Java实现
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger b1 = new BigInteger(scanner.next());
BigInteger b2 = new BigInteger(scanner.next());
b1 = b1.add(b2);
System.out.println(b1);
}
}