#include <iostream>
#include <cstring>
using namespace std;
string a,b;
string substr(string a,string b )
{
int i,j,k,flag=1;
string s1,s2;
if(a.size()<b.size()||(a.size()==b.size()&&a.compare(b)<0))
{
//a的长度小于b的长度 或者 a的长度等于b的长度 a小于b
s1=a;
a=b;
b=s1;
flag=0;
}
//始 终 令 a 的 长 度 大 于 b 的长度
while (a.length()-1>b.length()-1) b='0'+b; //字符短的加前导零,使他们一样长
for (i=a.length()-1; i>=1; i--) //减,规整 最高位单独处理
{
if(a[i]>=b[i])
a[i]=a[i]-b[i]+'0';
else
{
a[i]=a[i]-b[i];
a[i]=a[i]+10+'0';
a[i-1]=a[i-1]-1;
}
}
a[0]=a[0]-b[0]+'0'; // a must more than b
//
// for( i=0; i<a.length(); i++)
// a[i]+=48;
for(i=0; i<a.length(); i++) // 去零 from high to low
if(a[i]!='0')
break;
if(i==a.length())
{
a="0";
return a;
}
for(j=i,k=0; j<a.length(); j++,k++)
s2=s2+a[j];
if(flag!=1)
{
s2='-'+s2;
}
return s2;
}
int main()
{
while(cin>>a>>b)
{
cout<<substr(a,b)<<endl;
}
return 0;
}
大整数减法(模板)
最新推荐文章于 2020-07-21 13:04:44 发布