70分
WA on #2 #7 #10
/*
高精度剑法
一 建立字符串a,b,整型数组x,y,z[114514],整形变量len1,len2,len
a:被减数
b:减数
x,y,z:倒序存数
c:结果
len1:被减数的长度
len2:减数的长度
二 输入,判断a是否小于b
先判断长度
在判断字典序
如是,交换a,b,输出'-'
判断a是否等于b
如是,输出0
三 计算len1,len2
四 倒序存数
五 遍历x,y
若x,y数组第i位与t的和为0,停止循环
z数组第i位=x,y数组第i位与t的和为0
如z数组第i位小于零:
z数组第i位的后一位--
z数组第i位+=10
如z数组第i位不等于零:
len=i
六 从第len位开始倒序输出z数组
*/
#include<bits/stdc++.h>
using namespace std;
string a,b;
int x[114514],y[114514],z[114514],len1,len2,len;
int main(){
cin>>a>>b;
if(a.size()<b.size()||a>b){
cout<<'-';
swap(a,b);
}
else if(a==b){
cout<<0;
return 0;
}
len1=a.size();
len2=b.size();
for(int i=len1-1;i>=0;i--){
x[len1-i]=a[i]-'0';
}
for(int i=len2-1;i>=0;i--){
y[len2-i]=b[i]-'0';
}
for(int i=1;i<=len1;i++){
z[i]+=x[i]-y[i];
if(z[i]<0){
z[i+1]--;;
z[i]+=10;
}
if(z[i]!=0) len=i;
}
for(int i=len;i>0;i--){
cout<<z[i];
}
return 0;
}