题目描述
实现一个加法器,使其能够输出a+b的值。
输入描述:
输入包括两个数a和b,其中a和b的位数不超过1000位。
输出描述:
可能有多组测试数据,对于每组数据, 输出a+b的值。
示例1
输入
2 6 10000000000000000000 10000000000000000000000000000000
输出
8 10000000000010000000000000000000
这种类似的题目做过很多遍,主要就是那个进位的记录要考虑全面。
#include <iostream>
#include <string.h>
using namespace std;
char num1[1010];
char num2[1010];
void add(char *num1,char *num2){
int result[1010];
int len1=strlen(num1);
int len2=strlen(num2);
int p=len1-1;
int q=len2-1;
int r=0;
int temp;
int k=0;
while(p>=0&&q>=0){
temp=(num1[p]-48)+(num2[q]-48)+r;
r=0;
if(temp>=10){
result[k]=temp%10;
k++;
r=temp/10;
}
else{
result[k]=temp;
k++;
}
p--;
q--;
}
if(p>=0){
while(p>=0){
temp=(num1[p]-48)+r;
r=0;
if(temp>=10){
result[k]=temp%10;
r=temp/10;
k++;
}
else{
result[k]=temp;
k++;
}
p--;
}
}
else if(q>=0){
while(q>=0){
temp=(num2[q]-48)+r;
r=0;
if(temp>=10){
result[k]=temp%10;
r=temp/10;
k++;
}
else{
result[k]=temp;
k++;
}
q--;
}
}
if(r>0){
result[k]=r;
k++;
}
for(int i=k-1;i>=0;i--){
cout<<result[i];
}
cout<<endl;
}
int main(){
while(cin>>num1>>num2){
add(num1,num2);
}
return 0;
}