1168:大整数加法
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【参考代码】
#include <iostream>
#include <cstring >
#include <cstdio>
using namespace std ;
int main( )
{
char add1[102],add2[102];
int oper1[102],oper2[102],sum[102];
memset(oper1,0,sizeof(oper1));
memset(oper2,0,sizeof(oper2));
memset(sum,0,sizeof(sum));
//gets( add1 ) ;
//gets( add2 ) ;
cin >> add1 >> add2 ;
int len1 = strlen( add1 ) ;
int len2 = strlen( add2 ) ;
for ( int i = 0 ; i < len1 ; i ++ )
{
oper1 [ len1 - i - 1 ] = add1 [ i ] - 48;
}
for ( int i = 0 ; i < len2 ; i ++ )
{
oper2 [ len2 - i - 1 ] = add2 [ i ] - 48;
}
//
int c = 0 ;
int lensum = 0 ;
while ( lensum < len1 || lensum < len2 )
{
sum[lensum ]= ( oper1[lensum ] + oper2[lensum] + c ) % 10 ;
c = ( oper1[lensum ] + oper2[lensum] + c ) / 10 ;
lensum ++ ;
}
sum [ lensum ] = c ;
if ( c == 0 )
{
lensum -- ;
}
for ( int i = lensum ; i >= 0 ; i -- )
{
cout << sum [ i ] ;
}
cout << endl<< "" ;
return 0 ;
}