问题内容
Description
输入2个整数a和b,输出a+b。
Input Format
输入有两行,第一行a,第二行b。
0≤a,b≤101000000≤a,b≤10100000。
Output Format
输出只有一行,a+b。
Sample Input
1234
1111111111
Sample Output
1111112345
代码实现及简析
数组模拟竖式计算,类型选用int,long,long long,char都可以,取模不超过类型最大值就行
#include <stdio.h>
#include <string.h>
char a[100002];
char b[100002];
int main(){
int i = 0;
int lena = 0,lenb = 0,lenres,lenadd;
char *result, *add=a;
char in;
while(1)
{
in = getchar();
if(in == '\n'){
add[i]=0;
if(!lena){
lena = i;
add = b;
result = a;
i = 0;
}
else{
lenb = i;
if(lena < lenb){
result = b;
add = a;
lenres = lenb;
lenadd = lena;
}
else{
lenres = lena;
lenadd = lenb;
}
break;
}
}
else{
add[i++] = in;
}
}
lenadd--;
while(lenres--){
result[lenres] = (result[lenres]-'0') + (lenadd >= 0 ? add[lenadd] - '0':0);
lenadd--;
in = result[lenres]/10;
result[lenres] = result[lenres]%10 + '0';
if(lenres > 0){
result[lenres - 1] = in + result[lenres - 1];
in = 0;
}
}
if(in){
putchar(in+'0');
}
puts(result);
return 0;
}
时间:109ms 空间:10180kb