#include<bits/stdc++.h>
using namespace std;
int big(string a,string b)
{
string c;
int lena,lenb,x,y,result=1;//1代表大于,-1代表小于,0代表等于
lenb=b.length();
lena=a.length();
if (lena > lenb) {return result;}
else if (lenb > lena) {result=-1;}
else
{
for (int i=0;i<=lena-1;i++)//比两个数字的大小
{
x=int(a[i]-'0');
y=int(b[i]-'0');
if (x==y && i==lena-1){result=0;}//说明两个数字相等
else if (x>y) {break;}//说明a比b大
else if (x<y)
{
result=-1;
break;//说明b比a大
}
else{continue;}
}
}
return result;
}
string add(string a,string b)
{
string c;
int d=0,lena,lenb,x,y;
lena=a.length();
lenb=b.length();
if (lena > lenb)
{
for (int i = 1;i<=lena-lenb;i++){b='0'+b;}
}
else if (lenb > lena)
{
for (int i = 1;i<=lenb-lena;i++){a='0'+a;}
}
lenb=b.length();
lena=a.length();
for (int i=lena-1;i>=0;i--)
{
x=int(a[i]-'0');
y=int(b[i]-'0');
if (x+y+d >= 10)
{
c=char(x+y+d-10+'0')+c;
d=1;
}
else
{
c=char(x+y+d+'0')+c;
d=0;
}
}
if (d==1){c='1'+c;}
return c;
}
string difference(string a,string b)
{
string c;
int d=0,lena,lenb,x,y;
lena=a.length();
lenb=b.length();
if (lena > lenb)
{
for (int i = 1;i<=lena-lenb;i++){b='0'+b;}
}
else if (lenb > lena)
{
for (int i = 1;i<=lenb-lena;i++){a='0'+a;}
}
lenb=b.length();
lena=a.length();
if (big(a,b)==0)
{
c="0";
return c;
}
else if (big(a,b)==1)
{
for (int k=lena-1;k>=0;k--)
{
x=int(a[k]-'0')+d;
y=int(b[k]-'0');
if (x>=y)
{
c=char(x-y+'0')+c;
d=0;
}
else
{
c=char(x-y+10+'0')+c;
d=-1;
}
}
}
else if (big(a,b)==-1)
{
for (int k=lena-1;k>=0;k--)
{
x=int(b[k]-'0')+d;
y=int(a[k]-'0');
if (x>=y)
{
c=char(x-y+'0')+c;
d=0;
}
else
{
c=char(x-y+10+'0')+c;
d=-1;
}
}
}
while (int delta=-1)
{
delta++;
if(c[delta]=='0') {c[delta]='\0';}
else {break;}
}
if (big(a,b)==-1) {c='-'+c;}
return c;
}
string product(string a,string b)
{
string c;
int lena,lenb,x,y,d=0,e;
lena=a.length();
lenb=b.length();
for (int i=lenb-1;i>=0;i--)
{
string f="\0";
x=int(b[i]-'0');
for (int j=lena-1;j>=0;j--)
{
y=int(a[j]-'0');
if (x==0 ){f="0";}
e=x*y+d;
for (int k=0;k<=9;k++)
{
if (e>=k*10 && e<(k+1)*10)
{
d=k;
f=char(e-k*10+'0')+f;
break;
}
}
}
if (d!=0)
{
f=char(d+'0')+f;
d=0;
}
int i1=lenb-i-1;
while(i1>0)
{
i1--;
f=f+'0';
}
c=add(c,f);
}
if (a=="0" || b=="0"){c="0";}
return c;
}
string quotient(string a,string b)
{
string c="0";
if (big(a,b)==-1) {c="0";}
else if (big(a,b)==0) {c="1";}
else
{
while(true)
{
if (big(a,b)==1){
a=difference(a,b);
c=add(c,"1");
continue;
}
else if (big(a,b)==0){
c=add(c,"1");
break;
}
else {break;}
}
}
return c;
}
string remainder(string a,string b)
{
string c="0",d;
while(true)
{
if (big(a,b)==-1)
{
c=a;
break;
}
else if (big(a,b)==0){break;}
else
{
d=quotient(a,b);
while(true)
{
d=difference(d,"1");
a=difference(a,b);
if (d=="0"){break;}
}
c=a;
break;
}
}
return c;
}
int main()
{
string a,b;
cin>>a>>b;
cout<<add(a,b)<<endl;
cout<<difference(a,b)<<endl;
cout<<product(a,b)<<endl;
cout<<quotient(a,b)<<endl;
cout<<remainder(a,b);
}