/*功能:就输入式较大的正整数进行加减乘除处理
2017.2.14
[第一次更改:2017.2.14]
[完成于:2017.2.14]
*/
#include<stdio.h>
int main()
{
char c1[1000],c2[1000];
int i,ii,iii,iiii,n,m,zheng,qufu;
for(i=0;i<1000;i++)
{
scanf("%c",&c1[i]);
if(c1[i]=='\n')
{
n=i;
break;
}
}
int shu1[n];
for(i=0;i<n;i++)
{
shu1[n-1-i]=c1[i]-48;
}
printf("\n");
char fuhao;
scanf("%c",&fuhao);
printf("\n");
for(i=0;i<1000;i++)
{
scanf("%c",&c2[i]);
if(c2[i]=='\n')
{
m=i;
break;
}
}
int shu2[m];
for(i=0;i<m;i++)
{
shu2[m-i-1]=c2[i]-48;
}//高位存高位数
int jieguo[1000];
for(i=0;i<1000;i++)
{
jieguo[i]=0;
}//赋值
int e;
if(fuhao=='+')
{
if(n>=m)
{
for(i=0;i<m;i++)
{
jieguo[i]=shu1[i]+shu2[i];
}
for(;i<n;i++)
{
jieguo[i]=shu1[i];
}
}
else
{
for(i=0;i<n;i++)
{
jieguo[i]=shu1[i]+shu2[i];
}
for(;i<m;i++)
{
jieguo[i]=shu2[i];
}
}
for(i=0;i<n;i++)
{
if(jieguo[i]>9)
{
jieguo[i]=jieguo[i]-10;
jieguo[i+1]++;
}
}
}
else if(fuhao=='-')
{
if(n>m)
{
for(i=0;i<m;i++)
{
jieguo[i]=shu1[i]-shu2[i];
}
for(;i<n;i++)
{
jieguo[i]=shu1[i];
}
}
else if(n==m)
{
for(ii=n-1;ii<n;ii--)
{
if(shu1[ii]>shu2[ii])
{
for(i=0;i<m;i++)
{
jieguo[i]=shu1[i]-shu2[i];
}
break;
}
else if(shu1[ii]<shu2[ii])
{
for(i=0;i<n;i++)
{
jieguo[i]=shu2[i]-shu1[i];
}
qufu=1;
break;
}
else if(shu1[ii]==shu2[ii])
{
continue;
}
}
}
else
{
for(i=0;i<n;i++)
{
jieguo[i]=shu2[i]-shu1[i];
}
for(;i<m;i++)
{
jieguo[i]=shu2[i];
}
qufu=1;
}
for(i=0;i<m;i++)
{
if(jieguo[i]<0)
{
jieguo[i]=jieguo[i]+10;
jieguo[i+1]--;
}
}
}
else if(fuhao=='*')
{
for(ii=0;ii<m;ii++)
{
for(i=0;i<n;i++)
{
jieguo[i+ii]=jieguo[i+ii]+shu1[i]*shu2[ii];
}
}
for(i=0;i<m+n;i++)
{
if(jieguo[i]>9)
{
zheng=jieguo[i]/10;
jieguo[i]=jieguo[i]%10;
jieguo[i+1]=jieguo[i+1]+zheng;
}
}
}
else if(fuhao=='/')
{
int shu3[n];
if(n<m)
{
//不作处理
}//采取逐减法:挨个减,并逐次检验。减多了,再加回来。
else if(n>=m)
{
for(iiii=n-m,iii=0;iiii>=0;iiii--,iii++)
{
for(jieguo[iiii]=1;;jieguo[iiii]++)
{
for(i=n-1;i>=0;i--)
{
shu3[i]=shu1[i];
}
for(i=n-1-iii,ii=m-1;ii>=0;ii--,i--)
{
shu3[i]=shu3[i]-shu2[ii]*jieguo[iiii];
}
for(i=0;i<n-1;i++)
{
zheng=0;
while(shu3[i]<0)
{
shu3[i]=shu3[i]+10;
zheng++;
}
shu3[i+1]=shu3[i+1]-zheng;
}
for(e=n-1;e>=0&&shu3[e]==0;e--);
if(shu3[e]>0)
{
continue;
}
else if(shu3[e]<0)
{
jieguo[iiii]--;
break;
}
else if(e==-1||(e==0&&shu3[e]<=shu2[m-1]))
{
break;
}
}
for(i=n-1-iii,ii=m-1;ii>=0;ii--,i--)
{
shu1[i]=shu1[i]-(shu2[ii]*jieguo[iiii]);
}
for(i=0;i<n-1;i++)
{
zheng=0;
while(shu1[i]<0)
{
shu1[i]=shu1[i]+10;
zheng++;
}
shu1[i+1]=shu1[i+1]-zheng;
}
}
}
}
for(e=999;jieguo[e]==0&&e>=0;e--);
printf("=");
if(qufu==1)
{
printf("-");
}
if(e==-1)
{
printf("0");
}
else
{
for(i=e;i>=0;i--)
{
printf("%d",jieguo[i]);
}
}
if(fuhao=='/')
{
printf("......");
for(e=n-1;shu1[e]==0&&e>=0;e--);
for(i=e;i>=0;i--)
{
printf("%d",shu1[i]);
}
}
return 0;
}