高精度减法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <bits/stdc++.h>
#include <string>
using namespace std;
int a[10001],b[10001],c[10001];
int main(){
string sta,stb;
int la,lb,lc,i,j,g=0;
cin>>sta>>stb;
la=sta.size();
lb=stb.size();
if(la<lb || (la==lb && sta<stb)){
swap(sta,stb);
swap(la,lb);
cout<<"-";
}
lc=la;
for(i=0;i<la;i++) a[i]=sta[la-i-1]-'0';
for(i=0;i<lb;i++) b[i]=stb[lb-i-1]-'0';
for(i=0;i<lc;i++){
c[i]=a[i]-b[i]-g;
if(c[i]<0)
{
c[i]+=10;
g=1;
}
else g=0;
}
while(lc>1 && c[lc-1]==0){
lc--;
}
for(i=lc-1;i>=0;i--) cout<<c[i];
return 0;
}