和加法一样,要注意处理下负数即可
2024-01-06 20:33:57
发布于:广东
158阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int a[10001],b[10001],c[10001];
int main()
{
cin>>s1>>s2;
//求长度
int len1 = s1.size();
int len2 = s2.size();
int flag = 0;
//a-b 如果b比较大,那么采取其他方法
if(len2>len1 or (len2==len1 and s2>s1))//b比较大
{
flag=1;
for(int i=0;i<len1;++i) b[i] = s1[len1-i-1]-'0';
for(int i=0;i<len2;++i) a[i] = s2[len2-i-1]-'0';
}
else
{
flag=0;
//正常的倒序存储
for(int i=0;i<len1;++i) a[i] = s1[len1-i-1]-'0';
for(int i=0;i<len2;++i) b[i] = s2[len2-i-1]-'0';
}
int lenmax = max(len1,len2);
//减法
for(int i=0;i<=lenmax;++i)
{
if(a[i]-b[i]<0)
{
a[i+1]--;
a[i]+=10;
}
c[i] = a[i]-b[i];
}
//前导0
int t = lenmax;
while(t>0 and c[t]==0) t--;
//输出符号
if(flag) cout<<"-";
//逆序输出
for(int i=t;i>=0;--i) cout<<c[i];
return 0;
}
//A7871.高精度减法
这里空空如也
有帮助,赞一个