AcWing 792. 高精度减法
原题链接
简单
#include<iostream>
using namespace std;
int main()
{
int signs=0;
string a,b;
cin>>a;
cin>>b;
if(b.size()>a.size())
{
swap(a,b);
signs = 1;
}
else if(a.size()==b.size())
{
for(int i = 0;i <b.size();i++)
{
if(a[i]>b[i]) break;
if(b[i]>a[i])
{
swap(a,b);
signs = 1;
break;
}
}
}
for(int i = b.size()-1,j = a.size()-1;i >= 0;i--,j--)
{
a[j]=a[j]-(b[i]-'0');
if(a[j]<'0')
{
a[j-1]--;
a[j]+=10;
}
if(j-2>0&&a[j-1]<'0')
{
a[j-2]--;
a[j-1]+=10;
}
}
if(signs) cout<<'-';
if(a[0]=='0')
{
bool zer=1;
for(int i = 0;i < a.size();i++)
{
if(zer&&a[i]=='0'&&i==a.size()-1)
cout<<0<<endl;
if(zer&&a[i]=='0')
continue;
if(zer&&a[i]!='0')
{
zer=0;
}
cout<<a[i];
}
}
else
cout<<a<<endl;
}