社区讨论
这个程序本地能过,洛谷上为何只有80分?
P2142高精度减法参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @loctqz2t
- 此快照首次捕获于
- 2023/10/30 19:36 2 年前
- 此快照最后确认于
- 2023/11/05 06:14 2 年前
CPP
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[10105],b[10105];
int c[10106];
int main()
{
cin>>a;
cin>>b;
int h1,h2;
h1=strlen(a);
h2=strlen(b);
int s=max(h1,h2);
if(h1<s)
{
for(int i=h1-1;i>=0;i--)
{
a[s-(h1-i)]=a[i];
a[i]='0';
}
}
if(h2<s)
{
for(int i=h2-1;i>=0;i--)
{
b[s-(h2-i)]=b[i];
b[i]='0';
}
}
for(int i=s-1;i>=0;i--)
{
int s1=0,s2=0;
if((a[i]>=48)&&(a[i]<=57)) s1=a[i]-48;
if((b[i]>=48)&&(b[i]<=57)) s2=b[i]-48;
c[i+1]=s1-s2;
}
int i=1;
while(c[i]==0) i++;
if(c[i]<0)
{
cout<<"-";
for(int j=i;j<=s;j++)
c[j]*=(-1);
}
for(int j=s;j>=i;j--)
{
if(c[j]<0)
{
c[j]+=10;
c[j-1]-=1;
}
}
while(c[i]==0) i++;
if(c[s]==0) cout<<0;
for(int j=i;j<=s;j++) cout<<c[j];
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...