已知两个数A和B,求A-B的运算结果。
输入格式:
输入包括两个正整数A和B 。(0<A,B≤1e10086)
输出格式:
输出A-B的运算结果。
输入样例1:
3
2
输出样例1:
在这里给出相应的输出。例如:
1
输入样例2:
11102356985410
2356985410235698
输出样例2:
在这里给出相应的输出。例如:
-2345883053250288
#include<bits/stdc++.h>
using namespace std;
struct bign{
int d[1000];
int len;
bign(){
memset(d,0,sizeof(d));
len=0;
}
};
bign change(string s){
bign a;
a.len=s.length();
for(int i=0;i<a.len;i++){
a.d[i]=s[a.len-i-1]-'0';
}
return a;
}
int comp(bign a,bign b){
if(a.len>b.len) return 1;
else if(a.len<b.len) return -1;
else{
for(int i=a.len-1;i>=0;i--){
if(a.d[i]>b.d[i]) return 1;
else if(a.d[i]<b.d[i]) return -1;
}
return 0;
}
}
bign sub(bign a,bign b){
bign c;
for(int i=0;i<a.len||i<b.len;i++){
if(a.d[i]<b.d[i]){
a.d[i+1]--;
a.d[i]+=10;
}
c.d[c.len++]=a.d[i]-b.d[i];
}
while(c.len>=2&&c.d[c.len-1]==0){
c.len--;
}
return c;
}
int main(){
string t1,t2;
cin>>t1>>t2;
bign a=change(t1),b=change(t2);
bign c;
if(comp(a,b)==-1){
cout<<"-";
c=sub(b,a);
}else c=sub(a,b);
for(int i=c.len-1;i>=0;i--){
cout<<c.d[i];
}
return 0;
}