#include<iostream>
#include<cstring>
using namespace std;
const int MAX_SIZE = 104;
char A[MAX_SIZE];
char B[MAX_SIZE];
char C[MAX_SIZE];
inline void char2int( char * a, int n)
{
for( int i=0; i<n; i++)
{
if( a[i] > 'A')
a[i] = a[i] - 'a' + 10;
else
a[i] = a[i] - '0';
}
return;
}
inline void int2char( char * a, int n)
{
static char map[] = "0123456789abcdefghij";
for( int i=0; i< n; i++)
a[i] = map [ a[i] ];
return;
}
int martianadd( char * a, int la, char *b, int lb, char *c)
{
char * ap = a + la -1;
char * bp = b + lb -1;
char * cp = c;
int carry = 0;
while( ap >= a && bp >= b)
{
*cp = *ap + *bp + carry;
carry = *cp / 20;
*cp %= 20;
ap--, bp--;
cp++;
}
if( ap >= a )
{
while( ap >= a && carry > 0)
{
*cp = *ap + carry;
carry = *cp / 20;
*cp %= 20;
cp++,ap--;
}
while( ap >= a)
{
*cp = *ap;
cp++,ap--;
}
}
if( bp >= b )
{
while( bp >= b && carry > 0)
{
*cp = *bp + carry;
carry = *cp / 20;
*cp %= 20;
cp++,bp--;
}
while( bp >= b)
{
*cp = *bp;
cp++,bp--;
}
}
while( carry > 0)
{
*cp = carry;
carry = *cp / 20;
*cp %= 20;
cp++;
}
return cp - c;
}
inline void dumpresult( char *c, int lc)
{
char * cp = c + lc -1;
while( cp >= c)
cout<< *(cp--);
cout<<endl;
}
int main( void)
{
while( cin.getline( A, MAX_SIZE) && cin.getline( B, MAX_SIZE) )
{
int la = strlen( A);
int lb = strlen( B);
int lc;
char2int( A, la);
char2int( B, lb);
lc = martianadd( A, la, B, lb, C);
int2char( C, lc);
dumpresult( C, lc);
}
return 0;
}
zoj1205
最新推荐文章于 2018-10-13 18:25:57 发布