#include <stdio.h>
#include<stdlib.h>
#include "string.h"
#include "malloc.h"
int* invert(int * p,int index)
{
int i = 0;
int len = index /2;
for (i ; i< len ; i ++)
{
int t;
t = p[i] ;
p[i] = p[index - i -1];
p[index - i -1]= t;
}
return p;
}
int add_fr(int * p, int * p1,int* maxNum,int *result)
{
int i =0 ;
int t = 0 ;
static int div =0;
bool flag = false;
bool flag_1 = false;
static int num = 0;
for (i = 0; i<*maxNum; i ++)
{
t = div + p[i] + p1[i];
if (t < 10)
{
result[i] = t;
div = 0;
}
else
{
int res;
res = t % 10;
div = t / 10;
result[i] = res;
}
if (i == * maxNum -2 && (t >= 10))
{
flag = true;
}
if (i == *maxNum - 1 && (t >=10))
{
flag_1 = true;
}
if (flag && flag_1)
{
* maxNum += 1;
flag = false;
flag_1 = false;
result[*maxNum -1]= 1;
}
if (flag_1 && flag == false)
{
break;
}
}
return 0;
}
int main()
{
int i;
int num1 = 0;
int num2 = 0;
char cc1[100] = {0};
char cc2[100] = {0};
int b[100];
int b1[100];
int * p = NULL;
int * p1= NULL;
int * result = NULL;
int maxNUm= 0;
int *pNum= NULL;
gets(cc1);
gets(cc2);
memset(b,0, sizeof(b));
memset(b1,0,sizeof(b1));
pNum = &maxNUm;
for (i = 0;cc1[i]!='\0' ;i ++)
{
b[i] = cc1[i]- '0';
num1++;
}
for (i= 0;cc2[i] !='\0'; i ++)
{
b1[i] =cc2[i]- '0';
num2 ++;
//printf(" %d ", b1[i]);
}
if (num1 >num2)
{
*pNum = num1;
}
else
{
*pNum = num2;
}
p = b;
p1 = b1;
result =(int * )malloc(sizeof(int ) * 1000);
memset(result,0, sizeof(int ) * 1000);
invert( p,num1);
invert( p1,num2);
add_fr(p, p1,pNum,result);
invert( result,*pNum);
//printf("p = %d, p1 = %d, res= %d , pNum= %d \n", p[0],p1[0], result[0], *pNum);
i= 0;
for (i; i< *pNum; i++)
{
printf("%d ",result[i]);
}
getchar();
free(result);
return 0;
}