社区讨论
20,小减大不对
P2142高精度减法参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjuumi8
- 此快照首次捕获于
- 2025/11/04 08:53 4 个月前
- 此快照最后确认于
- 2025/11/04 08:53 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
char a[1000000],b[1000000];int c[1000000],d[1000000],e[1000000],f;bool j;
int main(){
cin>>a>>b;
for(int i=strlen(a)-1;i>=0;i--){
c[strlen(a)-i-1]=a[i]-48;
}for(int i=strlen(b)-1;i>=0;i--){
d[strlen(b)-i-1]=b[i]-48;
}if(strlen(a)>=strlen(b)||(strlen(a)==strlen(b)&&a>b)){
for(int i=0;i<=max(strlen(a),strlen(b));i++){
if(c[i]-d[i]>-1){
e[i]=c[i]-d[i]+f;
f=0
;} else{
e[i]=c[i]+10-d[i]+f;
f=-1;
}
}
for(int i=max(strlen(a),strlen(b));i>=0;i--){
if(e[i]==0&&j==0&&i!=0){
continue;
}else{
j=1;
}
cout<<e[i];
}}
else{
cout<<"-";
for(int i=strlen(a)-1;i>=0;i--){
c[strlen(a)-i-1]=a[i]-48;
}for(int i=strlen(b)-1;i>=0;i--){
d[strlen(b)-i-1]=b[i]-48;
}
for(int i=0;i<=max(strlen(a),strlen(b));i++){
if(d[i]-c[i]>-1){
e[i]=d[i]-c[i]+f;
f=0;
} else{
e[i]=d[i]+10-c[i]+f;
f=-1;
}
}
for(int i=max(strlen(a),strlen(b));i>=0;i--){
if(e[i]==0&&j==0&&i!=0){
continue;
}else{
j=1;
}
cout<<e[i];
}}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...