题目:
已知两个数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;
string a,b;
int t1,t2,t,o,p;
char c[20000],d[20000],ans[20000];//c>d t1>t2
int cmp;
int main() {
cin>>a>>b;
t1=a.size();
t2=b.size();
for(int i=0; i<t1; i++) a[i]-=48;
for(int i=0; i<t2; i++) b[i]-=48;
if(t1>t2) {
for(int i=1; i<=t1; i++) {
c[i]=a[t1-i];
}
for(int i=1; i<=t2; i++) {
d[i]=b[t2-i];
}
}
if(t1<t2) {
for(int i=1; i<=t2; i++) {
c[i]=b[t2-i];
}
for(int i=1; i<=t1; i++) {
d[i]=a[t1-i];
}
int k;
k=t1;
t1=t2;
t2=k;
cmp=1;
}
if(t1==t2) {
for(int i=0; i<t1; i++) {
if(b[i]>a[i]) {
for(int j=1; j<=t1; j++) {
c[j]=b[t1-j];
d[j]=a[t1-j];
}
cmp=1;
break;
}
if(a[i]>b[i]) {
for(int j=1; j<=t1; j++) {
c[j]=a[t1-j];
d[j]=b[t1-j];
}
break;
}
if(a[i]==b[i]) o++;
}
if(o==t1) p++;
}
t=t1;
for(int i=1; i<=t; i++) { //c-d
if(c[i]>=d[i]) {
ans[i]=c[i]-d[i];
} else {
int k=i+1;
while(c[k]==0) {
c[k]=9;
k++;
if(k==t&&(c[k]-1)==0) {
t--;
}
}
c[k]--;
ans[i]=c[i]+10-d[i];
}
}
if(p==1) {
cout<<"0";
} else {
if(cmp==1) cout<<"-";
while(ans[t]==0) t--;
for(int i=t; i>=1; i--) {
printf("%d",ans[i]);
}
}
return 0;
}