记录编号 |
454918 |
评测结果 |
AAAAAA |
题目名称 |
增强的减法问题 |
最终得分 |
100 |
用户昵称 |
WHZ0325 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2017-09-30 11:28:36 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s1[105];
char s2[105];
char ans[105];
int a[105];
int b[105];
int c[105];
inline void sub() {
int len1=strlen(s1);
int len2=strlen(s2);
int len=0;
if(strcmp(s1,s2)==0) {
ans[0]='0';
ans[1]=0;
return;
}
if(len1<len2||(len1==len2&&strcmp(s1,s2)<0)) {
ans[len++]='-';
for(int i=0;i<len1;i++) {
b[i]=s1[len1-i-1]-'0';
}
for(int i=0;i<len2;i++) {
a[i]=s2[len2-i-1]-'0';
}
}
else {
for(int i=0;i<len1;i++) {
a[i]=s1[len1-i-1]-'0';
}
for(int i=0;i<len2;i++) {
b[i]=s2[len2-i-1]-'0';
}
}
int l=max(len1,len2);
int need=0;
for(int i=0;i<l;i++) {
if(a[i]-need<b[i]) {
c[i]=a[i]-need+10-b[i];
need=1;
}
else {
c[i]=a[i]-need-b[i];
need=0;
}
}
int l0;
for(l0=l-1;l0>=0;l0--) {
if(c[l0]!=0) {
break;
}
}
for(int i=0;i<=l0;i++) {
ans[len+i]=c[l0-i]+'0';
}
ans[l+1]=0;
}
int main() {
freopen("sub.in","r",stdin);
freopen("sub.out","w",stdout);
scanf("%s%s",s1,s2);
sub();
printf("%s\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}