A7871.高精度减法
2024-12-31 17:50:33
发布于:江苏
0阅读
0回复
0点赞
直接上函数(这道题没说数据范围,10000位足够了)。
#include<iostream>
#include<cstring>
using namespace std;
string subtract(string A,string B){
string C="";
int a[10000],b[10000],sum[10000],c[10000],lena=A.length(),lenb=B.length(),max=(lena>lenb?lena:lenb),digs=0,x=0;
bool fu=0;
if(lena!=lenb) fu=(lena<lenb);
else if(A[0]<B[0]) fu=1;
if(fu){
C="-";
swap(A,B);
swap(lena,lenb);
}
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(sum,0,sizeof(sum));
for(int i=0;i<max;i++){
if(i<lena) a[i]=A[lena-i-1]-'0';
if(i<lenb) b[i]=B[lenb-i-1]-'0';
sum[i]=a[i]-b[i]-x;
if(sum[i]<0){
x=1;
sum[i]+=10;
}else x=0;
digs++;
}
for(int i=0;i<digs;i++){
c[i]=sum[digs-i-1];
C+=c[i]+'0';
if(fu==0&&C=="0") C="";
else if(fu&&C=="-0") C="-";
}
if(C=="") return "0";
return C;
}
int main(){
string a,b;
cin>>a>>b;
cout<<subtract(a,b);
return 0;
}
这里空空如也
有帮助,赞一个