题目描述
给定两个正整数,计算它们的和。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的和。
数据范围
1≤整数长度≤100000
样例
输入样例:
12
23
输出样例:
35
算法
数组版
C++ 代码
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std ;
const int N = 100010 ; //定义数组长度
int x[N],y[N] ; //存两个数,用这两个数组模拟
void add(int a[],int b[]){ //相加函数,将结果存在a中
static int c[N] ; //定义辅助数组c
memset(c,0,sizeof c) ; //将c清零
for(int i = 0 ,t = 0 ; i < N ; i++){ //从第一位开始加
t += a[i] + b[i] ;
c[i] = t % 10 ;
t /= 10 ;
}
memcpy(a,c,sizeof c) ; //将c复制到a
}
void print(int a[]){
int k = N - 1 ;
while(k && !a[k]) k-- ; //找到不为0的最高位
while(k >= 0) cout << a[k--] ; //从最高位依次输出
cout << endl ;
}
int main(){
string a,b ;
cin >> a >> b ;
reverse(a.begin(),a.end()) ; //逆转
reverse(b.begin(),b.end()) ;
for(size_t i = 0 ; i < a.size() ; i++){ //赋值
x[i] = a[i] - '0' ;
}
for(size_t i = 0 ; i < b.size() ; i++){
y[i] = b[i] - '0' ;
}
add(x,y) ; //相加
print(x) ; //输出
return 0 ;
}