这个也没什么好说的,还是回到小学,算一下竖式,模拟一下减的过程,就好了。
Code
#include<bits/stdc++.h>
using namespace std;
int a[300],b[300],c[300];
string s1;
string s2;
int main()
{
cin>>s1;
int len1=s1.size();
cin>>s2;
int len2=s2.size();
if(len1<len2||(len1==len2&&s1<s2))
{
printf("-");
swap(s1,s2);
swap(len1,len2);
}
for(int i=1;i<=len1;i++) a[i]=s1[len1-i]-'0';//倒序存储
for(int i=1;i<=len2;i++) b[i]=s2[len2-i]-'0';//倒序存储
int len=max(len1,len2);
for(int i=1;i<=len;i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
c[i]=a[i]-b[i];
}
while(c[len]==0&&len>=2) len--;//删除多余的前导0
for(int i=len;i>=1;i--) printf("%d",c[i]);
return 0;
}
学习厌倦了?点我有更多精彩哦!