1014. 高精度加法
Description
输入2个整数a和b,输出a+b。
Input Format
输入有两行,第一行a,第二行b。
0≤a,b≤10^100000。
Output Format
输出只有一行,a+b。
Sample Input
1234
1111111111
Sample Output
1111112345
分析
使用数组表示进行加法
#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
void add(vector<char> &a, vector<char> &b)
{
char tmp_c;
int tmp_i=0;
vector<char>::reverse_iterator it_ra, it_rb;
vector<char>::iterator it_b;
for(it_ra=a.rbegin(), it_rb=b.rbegin(); it_ra!=a.rend(); it_ra++, it_rb++)
{
tmp_c=tmp_i + *it_ra + *it_rb - '0';
if(tmp_c > '9') {
tmp_i=1;
*it_rb=tmp_c - 10;
}
else {
tmp_i=0;
*it_rb=tmp_c;
}
}
for(; it_rb!=b.rend(); it_rb++) {
tmp_c=*it_rb + tmp_i;
if(tmp_c > '9') {
tmp_i=1;
*it_rb=tmp_c - 10;
}
else {
tmp_i=0;
*it_rb=tmp_c;
break;
}
}
if(tmp_i)
cout<<'1';
for(it_b=b.begin(); it_b!=b.end(); it_b++)
cout<<*it_b;
}
int main()
{
vector<char> a, b;
char tmp_c;
int tmp_i;
vector<char>::iterator it_a, it_b;
while((tmp_c=getchar())!='\n')
a.push_back(tmp_c);
while((tmp_c=getchar())!='\n')
b.push_back(tmp_c);
if(a.size()>b.size())
add(b, a);
else
add(a, b);
return 0;
}