题目描述
Description
给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。
输入描述
Input Description
读入两个用空格隔开的正整数
输出描述
Output Description
输出A-B的值
样例输入
Sample Input
3 12
样例输出
Sample Output
-9
数据范围及提示
Data Size & Hint
两个正整数的位数不超过500位
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char a[510],b[510];
int la,lb,l;
int fa[510]={0},fb[510]={0};
cin>>a>>b;
la=strlen(a);
lb=strlen(b);
l=max(la,lb);
for(int i=0;i<la;i++)
{
fa[la-i]=int(a[i])-'0';
}
for(int i=0;i<lb;i++)
{
fb[lb-i]=int(b[i])-'0';
}
int k,t=0;
for(int i=l;i>=1;i--)
{
if(fb[i]>fa[i]){k=1;break;}
if(fb[i]<fa[i]){k=0;break;}
if(fb[i]==0){continue;}
}
if(k==0)
{
for(int i=1;i<l;i++)
{
fa[i]=fa[i]-fb[i]-t;
t=0;
if(fa[i]<0){t=1;fa[i]=fa[i]+10;}
}
fa[l]=fa[l]-fb[l]-t;
for(int i=l;i>0;i--)
{
cout<<fa[i];
}
}
else
{
for(int i=1;i<l;i++)
{
fa[i]=fb[i]-fa[i]-t;
t=0;
if(fa[i]<0){t=1;fa[i]=fa[i]+10;}
}
fa[l]=fb[l]-fa[l]-t;
cout<<'-';
bool pd=true;
for(int i=l;i>0;i--)
{
if(fa[i]==0&&pd){continue;}
cout<<fa[i];
pd=false;
}
}
return 0;
}