社区讨论
90分求救
P2142高精度减法参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m03m4j7j
- 此快照首次捕获于
- 2024/08/21 16:49 2 年前
- 此快照最后确认于
- 2025/11/04 22:50 4 个月前
这份代码90分,我怀疑是处理不了1 1这类结果为0的数据,希望各位大佬能指点几句我太弱了
CPP#include <bits/stdc++.h>
using namespace std;
const int maxn=30000;
char a1[maxn],b1[maxn];
int a[maxn],b[maxn],s[maxn];
void jiao_huan(char a[],char b[])
{
char c[maxn];
for(int i=0;i<maxn;i++) c[i]=a[i];
for(int i=0;i<maxn;i++) a[i]=b[i];
for(int i=0;i<maxn;i++) b[i]=c[i];
printf("-");
}
void bi(char a[],char b[])
{
if(strlen(a)>strlen(b));
else if(strlen(a)<strlen(b)) jiao_huan(a,b);
else{
for(int i=0;i<strlen(a);i++)
{
if((a[i] -'0')>(b[i] -'0'));
else if((a[i] -'0')<(b[i] -'0'))jiao_huan(a,b);
}
}
}
int main()
{
scanf("%s%s",a1,b1);
memset(s,0,sizeof(s));
bi(a1,b1);
int sa=strlen(a1),sb=strlen(b1);
int max=sa>sb?sa:sb;
for(int i=0;i<sa;i++) a[sa - i - 1]=a1[i] - '0';
for(int i=0;i<sb;i++) b[sb-i-1]=b1[i] - '0';
for(int i=0;i<max;i++)
{
if(a[i]==-1)
{
a[i+1]--;
a[i]+=10;
}
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
s[i]=a[i]-b[i];
}
if(s[max-1]==0 && max-1>0) max--;
for(int i=max-1;i>=0;i--)
{
printf("%d",s[i]);
}
printf("\n");
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...