社区讨论

90 第一个点WA

P2142高精度减法参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo2e6tug
此快照首次捕获于
2023/10/23 12:23
2 年前
此快照最后确认于
2023/11/03 12:29
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a,b;
	int c[11500],d[11500],e[11500];
    bool f=0,g=0;
    memset(c,0,sizeof(c));
    memset(d,0,sizeof(d));
	memset(e,0,sizeof(e));
	cin>>a>>b;
	if(a==b)
		cout<<0;
	int h=a.size()-b.size();
	if(h<0)
		h=-h;
	string s(h,'0');
	if(a.size()>b.size())
		b=s+b;
	else
		a=s+a;
	for(int i=1;i<=10100;i++)
	{
		c[i]=a[i-1];
		c[i]-=48;
	}
	for(int i=1;i<=10100;i++)
	{
		d[i]=b[i-1];
		d[i]-=48;
	}
	for(int i=max(a.size(),b.size());i>0;i--)
	{
		e[i]+=c[i];
		e[i]-=d[i];
		if(e[i]<0)
		{
			e[i]+=10;
			e[i-1]-=1;
			if(i==1)
				g=1;
		}
	}
	if(g)
	{
		cout<<'-';
		memset(e,0,sizeof(e));
		for(int i=max(a.size(),b.size());i>0;i--)
		{
			e[i]-=c[i];
			e[i]+=d[i];
			if(e[i]<0)
			{
				e[i]+=10;
				e[i-1]-=1;
			}
		}
	}
	for(int i=1;i<=max(a.size(),b.size());i++)
	{
		if (f==1)
			cout<<e[i];
		else
		{
			if (e[i]>=1)
			{
				cout<<e[i];
				f=1;
			}
		}
	}
}
不知道哪儿有问题

回复

2 条回复,欢迎继续交流。

正在加载回复...