10分求调(c++

P2142 高精度减法

``` #include<bits/stdc++.h> using namespace std; int a[11451],b[11451],c[11451]; string jian(string a2,string b2); int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); string a,b; cin>>a>>b; cout<<jian(a,b); return 0; } string jian(string a2,string b2) { if (a2.size()<b2.size()) { cout<<'-'; swap(a2,b2); } else if (a2.size()==b2.size()) { if (a2<b2) { cout<<'-'; swap(a2,b2); } } memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); int len=max(a2.size(),b2.size()); string k=""; for (int i=a2.size()-1,j=1;i>=0;i--,j++) { a[j]=a2[i]-'0'; } for (int i=b2.size()-1,j=1;i>=0;i--,j++) { b[j]=b2[i]-'0'; } for (int i=1;i<=len;i++) { c[i]+=a[i]-b[i]; if (c[i]<0) { c[i]+=10; c[i+1]--; } } while (c[len]==0) { len--; } for (int i=max(1,len);i>=1;i--) { k+=c[i]+'0'; } return k; } ```
by xzy_AK_IOI @ 2024-04-14 16:16:15


|