题目描述
高精度减法。
输入格式
两个整数 a,b(第二个可能比第一个大)。
输出格式
结果(是负数要输出负号)。
样例输入
2 1
样例输出
1
#include<stdio.h>
#include<string.h>
/高精减法/
int main()
{
char str1[10500],str2[10500];
int l1,l2,l3,a[10500],i,j,k=0;
gets(str1);
gets(str2);
l1=strlen(str1);
l2=strlen(str2);
if(l1>l2)
{
end1: for(i=l1-1,j=l2-1;j>=0;i--,j--)
{
if(str1[i]<str2[j])
{
str1[i]+=10;
str1[i-1]--;
}
a[k]=str1[i]-str2[j];
k++;
}
for(;i>=0;i--)
{
a[k]=str1[i]-48;
k++;
}
}
else if(l1<l2)
{
end2: for(i=l1-1,j=l2-1;i>=0;i--,j--)
{
if(str2[j]<str1[i])
{
str2[j]+=10;
str2[j-1]--;
}
a[k]=str2[j]-str1[i];
k++;
}
for(;j>=0;j--)
{
a[k]=str2[j]-48;
k++;
}
printf("-");
}
else
{
for(i=0;i<l1;i++)
{
if(str1[i]>str2[i])
{
goto end1;
break;
}
if(str1[i]<str2[i])
{
goto end2;
break;
}
}
}
if(a[k-1]!=0)
printf("%d",a[k-1]);
for(i=k-2;i>=0;i--)
printf("%d",a[i]);
return 0;
}