//加法
#include <stdio.h>
#include <string.h>
#define MAXN 200
int an1[MAXN+10];
int an2[MAXN+10];
char szLine1[MAXN+10];
char szLine2[MAXN+10];
int main()
{
scanf("%s",szLine1);
scanf("%s",szLine2);
int i,j;
memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
int nlen1 = strlen(szLine1);
for(j=0,i=nlen1-1;i>=0;i--)
an1[j++] = szLine1[i]-'0';//逆序整型数组
int nlen2 = strlen(szLine2);
for(j=0,i=nlen2-1;i>=0;i--)
an2[j++] = szLine2[i]-'0';
for(i=0;i<MAXN;i++)
{
an1[i]+=an2[i]; //逐位相加
if(an1[i]>=10)
{
//看是否进位
an1[i]-=10;
an1[i+1]++;//进位
}
}
for(i=MAXN;(i>=0)&&(an1[i]==0);i--);
if(i>=0)
{
for(;i>=0;i--)
printf("%d",an1[i]);
}
else printf("0\n");
return 0;
}
//乘法
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int a[MAX_LEN+10],b[MAX_LEN+10],c[MAX_LEN*2+10];
char str1[MAX_LEN+10],str2[MAX_LEN+10];
int main()
{
scanf("%s",str1);
scanf("%s",str2);
int i,j;
int len1,len2;
len1 = strlen(str1);
len2 = strlen(str2);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(j=0,i=len1-1;i>=0;i--)//倒转第一个整数
a[j++] = str1[i]-'0';
for(j=0,i=len2-1;i>=0;i--)
b[j++] = str2[i]-'0';
for(i=0;i<len1;i++) //两数字相乘,每次一位
{
for(j=0;j<len2;j++)
c[i+j] += b[j]*a[i]; //先乘起来,后面统一处理进位
//一个数的第i位和另一个数的第j位相乘所得的数,是要累加到结果的第[i+j]位上的
}
for (i = 0; i < MAX_LEN*2; i++) //统一处理进位循环问题
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10; //后一位加上进位
c[i]%=10;
}
}
for(i=MAX_LEN*2;(c[i]==0)&&(i>=0);i--); //跳过高位的0
if(i>=0)
for(;i>=0;i--)
putchar('0'+c[i]);
else
printf("0");
return 0;
}