#include<iostream>
#include<stdlib.h>
#include<cstring>
using namespace std;
int n,m;
char numberN[1500],numberM[1500];
int *a,*b,*r;
void input_integer()
{
cin>>numberN;
cin>>numberM;
n=strlen(numberN);
m=strlen(numberM);
a=new int[n];
b=new int[m];
for(int i=0,j=n-1;i<n;i++,j--)
{
a[i]=numberN[j]-'0';
}
for(int i=0,j=m-1;i<m;i++,j--)
{
b[i]=numberM[j]-'0';
}
}
void integer_add(int a[],int b[],int n,int m)
{
r=new int[3000];
for(int i=0;i<3000;i++)r[i]=0;
if(n>=m)
{
for(int i=0;i<m;i++)
r[i]=a[i]+b[i];
for(int i=m;i<n;i++)
{
r[i]+=a[i];
}
}
else
{
for(int i=0;i<n;i++)
r[i]=a[i]+b[i];
for(int i=n;i<m;i++)
r[i]+=b[i];
}
for(int i=0;i<n;i++)
{
if(r[i]>10)
{
r[i+1]+=r[i]/10;
r[i]%=10;
}
}
int j;
for(j=2999;j>0;j--)
{
if(r[j]!=0)
break;
}
for(int i=j;i>=0;i--)
{
cout<<r[i];
}
cout<<endl;
}
void integer_sub(int a[],int b[],int n,int m)
{
int j;
for(int i=0;i<3000;i++)r[i]=0;
if(n>=m)
{
for(int i=0;i<m;i++)
r[i]=a[i]-b[i];
for(int i=m;i<n;i++)
r[i]+=a[i];
}
else if(n<m)
{
for(int i=0;i<n;i++)
r[i]=a[i]-b[i];
for(int i=n;i<m;i++)
r[i]-=b[i];
}
for(j=2999;j>0;j--)
{
if(r[j]!=0)
break;
}
for(int i=0;i<j;i++)
{
if(r[i]<0)
{
r[i+1]--;
r[i]+=10;
}
}
for(j=2999;j>0;j--)
{
if(r[j]!=0)
break;
}
for(int i=j;i>=0;i--)
cout<<r[i];
cout<<endl;
}
void integer_multi(int a[],int b[],int n,int m)
{
int j;
for(int i=0;i<3000;i++)r[i]=0;
for(int i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
r[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<n+m;i++)
{
if(r[i]>=10)
{
r[i+1]+=r[i]/10;
r[i]%=10;
}
}
for(j=2999;j>0;j--)
{
if(r[j]!=0)
break;
}
for(int i=j;i>=0;i--)
{
cout<<r[i];
}
cout<<endl;
}
int integer_Substract(int a[],int b[],int n,int m)
{
int i;
if(n<m)
return -1;
if(n==m)
{
for(i=n-1;i>=0;i--)
{
if(a[i]>b[i])
break;
else if(a[i]<b[i])
return -1;
}
}
for(i=0;i<n-1;i++)
{
a[i]-=b[i];
if(a[i]<0)
{
a[i]+=10;
a[i+1]--;
}
}
for(i=n-1;i>=0;i--)
if(a[i])
return i+1;
return 0;
}
void integer_divide(int a[],int b[],int n,int m)
{
int i,j;
int nTimes;
int nTemp;
for(i=0;i<3000;i++)
r[i]=0;
if(n<m)
{
cout<<"0"<<endl;
}
nTimes=n-m;
for(i=n-1;i>=0;i--)
{
if(i>=nTimes)
b[i]=b[i-nTimes];
else
b[i]=0;
}
m=n;
for(j=0;j<=nTimes;j++)
{
while(nTemp=integer_Substract(a,b+j,n,m-j)>=0)
{
n=nTemp;
r[nTimes-j]++;
}
}
for(j=2999;r[i]==0&&i>=0;i--);
if(i>=0)
{
for(;i>=0;i--)
cout<<r[i];
}
else
cout<<"0";
cout<<endl;
cout<<"余数为:";
for(i=n-1;i>=0;i--)cout<<a[i];
cout<<endl;
}
int main()
{
cout<<"请输入两个整数:"<<endl;
input_integer();
cout<<"两数和为:"<<endl;
integer_add(a,b,m,n);
cout<<"两数差为:"<<endl;
integer_sub(a,b,m,n);
cout<<"两数积为:"<<endl;
integer_multi(a,b,m,n);
cout<<"两数商为:"<<endl;
integer_divide(a,b,m,n);
system("pause");
return 0;
}
