// 高精度加法
#include
#include
using namespace std;
int* strtoint(char *str)
{
int i,len=strlen(str);
int* a=new int[(len+1)*sizeof(int)];
for(i=0;i
a[i]=(int)str[len-i-1]-48;
return a;
}
char* inttostr(int* a,int n)
{
int i;
char* str=new char[(n+1)*sizeof(char)];
for(i=0;i
str[i]=(char)a[n-i-1]+48;
str[n]='\0';
return str;
}
int check(int* a,int n)
{
int k=0,len=n;
while(a[len-1]==0&&len>1)
len--;
for(k=0;k
if(a[k]>=10)
{
a[k+1]=a[k+1]+a[k]/10;
a[k]=a[k]%10;
}
if(a[k]!=0)
len=k+1;
return len;
}
char* addition(char* m1,char* m2)
{
int i,len1,len2,len,c=0;
int* t1,*t2;
len1=strlen(m1);
len2=strlen(m2);
len=(len1>=len2) len1:len2;
t1=new int[(len+2)*sizeof(int)];
t2=new int[(len+2)*sizeof(int)];
t1=strtoint(m1);
t2=strtoint(m2);
for(i=len1;i
t1[i]=0;
for(i=len2;i
t2[i]=0;
for(i=0;i
t1[i]+=t2[i];
len=check(t1,len);
return inttostr(t1,len);
}
int main()
{
char m1[1000],m2[1000];
while(cin>>m1>>m2)
cout<
return 0;
}
//高精度乘法
#include
#include
using namespace std;
int* strtoint(char* str)
{
int i,len;
len=strlen(str);
int* a=new int[(len+1)*sizeof(int)];
for(i=0;i
a[i]=(int)str[len-i-1]-48;
return a;
}
char* inttostr(int* a,int n)
{
char* str=new char[(n+1)*sizeof(int)];
for(int i=0;i
str[i]=(char)a[n-i-1]+48;
str[n]='\0';
return str;
}
int check(int* a,int n)
{
int k,len=n;
while(a[len-1]==0&&len>1)
len--;
for(k=0;k
{
a[k+1]+=a[k]/10;
a[k]%=10;
}
if(a[k]!=0)
len=k+1;
return len;
}
char* multiply(char* m1,char* m2)
{
int i,j,len1,len2,len,c=0,*t1,*t2,*prod;
len1=strlen(m1);
len2=strlen(m2);
len=len1+len2;
t1=new int[(len1+1)*sizeof(int)];
t2=new int[(len2+1)*sizeof(int)];
prod=new int[(len+1)*sizeof(int)];
t1=strtoint(m1);
t2=strtoint(m2);
for(i=0;i
prod[i]=0;
for(i=0;i
for(j=0;j
prod[i+j]+=t1[i]*t2[j];
len=check(prod,len);
return inttostr(prod,len);
}
int main()
{
char m1[1000],m2[1000];
while(cin>>m1>>m2)
cout<
return 0;
}