题目描述
高精度减法
输入输出格式
输入格式:
两个整数a,b(第二个可能比第一个大)
输出格式:
结果(是负数要输出负号)
输入输出样例
输入样例#1:
2
1
输出样例#1:
1
说明
20%数据a,b在long long范围内
100%数据0<a,b<=10的10000次方
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN=100001;
char a1[MAXN],b1[MAXN];
int a[MAXN],b[MAXN];
int ans[MAXN];
int main()
{
scanf("%s%s",a1,b1);
int la=strlen(a1);
int lb=strlen(b1);
if(la<lb||(la==lb&&a1[0]<b1[0]))
{
printf("-");
swap(a1,b1);
swap(la,lb);
}
for(int i=0;i<la;i++)
a[i]=a1[la-i-1]-48;
for(int i=0;i<lb;i++)
b[i]=b1[lb-i-1]-48;
int lc=max(la,lb);
for(int i=0;i<lc;i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]=a[i]+10;
}
ans[i]=a[i]-b[i];
}
int flag=0;
for(int i=lc;i>=0;i--)
{
if(flag==0&&ans[i]==0&&i>0)continue;
else flag=1;
printf("%d",ans[i]);
}
return 0;
}