题目描述
高精度减法
样例
32
12
C 代码
#include<stdio.h>//C=A-B
#include<string.h>
#define N 100010
int A[N],B[N],C[N];
int main()
{
int la,lb,i,j,t;
char a[N],b[N];
scanf("%s",&a);
getchar();
scanf("%s",&b);
la=strlen(a);
lb=strlen(b);
for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
for(i=lb-1,j=0;i>=0;i--,j++) B[j]=b[i]-'0';
while()
if(strcmp(a,b)==0)//A=B时
printf("0");
else if(la>lb||(la==lb&&strcmp(a,b)>0))//A>B时
{
for(i=0;i<la;i++)
{
t=A[i]-t;
if(i<lb) t-=B[i];
C[i]=(t+10)%10;
if(t<0) t=1;
else t=0;
}
while(i-1>0&&C[i-1]==0)
i--;
for(j=i-1;j>=0;j--)
printf("%d",C[j]);
}
else//A<B时
{
for(i=0;i<lb;i++)
{
t=B[i]-t;
if(i<la) t-=A[i];
C[i]=(t+10)%10;
if(t<0) t=1;
else t=0;
}
while(i-1>0&&C[i-1]==0)
i--;
printf("-");
for(j=i-1;j>=0;j--)
printf("%d",C[j]);
}
return 0;
}