大数减法模板:如果string a< srting b 输出负数结果。如果是相反的,输出正数结果。
模板C++写法:
具体代码如下:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
string a,b;
string jianfa(string a,string b)
{
if(a.length() <b.length() ||a.length() ==b.length() &&a<b)
{
a.swap(b);
}
for(int i=a.length() -1, j=b.length() -1;i>=0;--i,--j)
{
a[i]=a[i]-(j>=0?b[j]-'0':0);
if(a[i]<'0')
{
a[i]+=10;
--a[i-1];
}
}
while(a.length() &&a[0]=='0') a.erase(a.begin() );
if(a.empty() ) a="0";
return a;
}
int main()
{
while(cin>>a>>b)
{
if(a.length() <b.length() ||(a.length() ==b.length() &&a[0]<b[0])) cout<<'-'<<jianfa(a,b)<<endl;
else
cout<<jianfa(a,b)<<endl;
}
return 0;
}