给出2个大整数A,B,计算A+B的结果。
输入格式
第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数)
输出格式
输出A + B
输入样例
68932147586
468711654886
输出样例
537643802472
参考程序
#include <bits/stdc++.h>
using namespace std;
char ch[10010];
int a[10010], b[10010], la, lb;
int main() {
scanf("%s", ch + 1 );
if(ch[1] == '-') {
la = strlen( ch + 1 ) - 1;
for( int i = 2; i <= la + 1; ++i ) a[ la + 1 - i + 1 ] = -( ch[ i ] - '0' );
} else {
la = strlen( ch + 1 );
for( int i = 1; i <= la; ++i ) a[ la - i + 1 ] = ch[ i ] - '0';
}
scanf( "%s", ch + 1 );
if( ch[ 1 ] == '-' ) {
lb = strlen( ch + 1 ) - 1;
for( int i = 2; i <= lb + 1; ++i ) b[ lb + 1 - i + 1 ] = -( ch[ i ] - '0' );
} else {
lb = strlen( ch + 1 );
for( int i = 1; i <= lb; ++i ) b[ lb - i + 1 ] = ch[ i ] - '0';
}
//以上是读入
la = max( la, lb ) + 1;
for( int i = 1; i < la; ++i ) a[ i ] += b[ i ];
for( int i = 1; i < la; ++i ) {
a[ i + 1 ] += a[ i ] / 10;
a[ i ] %= 10;
if( a[ i ] < 0 ) {
a[ i ] += 10;
--a[ i + 1 ];
}
}
while( la > 1 && a[ la ] == 0 ) --la;
if( a[ la ] < 0 ) {
printf( "-" );
for( int i = 1; i <= la; ++i ) a[ i ] = -a[ i ];
for( int i = 1; i < la; ++i ) {
if( a[ i ] < 0 ) {
a[ i ] += 10;
--a[ i + 1 ];
}
}
while( la > 1 && a[ la ] == 0 ) --la;
for( int i = la; i >= 1; --i ) printf( "%d", a[ i ] );
} else
for( int i = la; i >= 1; --i ) printf( "%d", a[ i ] );
printf( "\n" );
return 0;
}