社区讨论

求助

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@lo2w0pjq
此快照首次捕获于
2023/10/23 20:42
2 年前
此快照最后确认于
2023/10/23 20:42
2 年前
查看原帖
诸位大佬,求助,80WA
CPP
#include<bits/stdc++.h>
using namespace std;
int a[50000001],b[50000001];
string x,y,z;
int main ( )
{
	cin>>x>>y;
	a[0]=x.size();
	b[0]=y.size();
	for (int i=0;2*i<x.size();i++)
	{
		swap(x[i],x[x.size()-1-i]);
	}
	for (int i=0;i<x.size();i++)
	{
		a[i+1]=x[i]-'0';
	}
	for (int i=0;2*i<y.size();i++)
	{
		swap(y[i],y[y.size()-1-i]);
	}
	for (int i=0;i<y.size();i++)
	{
		b[i+1]=y[i]-'0';
	}
	a[0]=max(a[0],b[0]);
	for (int i=1;i<=a[0];i++)
	{
		a[i]-=b[i];
		if (a[i]<0)
		{
			a[i+1]--;
			a[i]+=10;
		}
	}
	if (a[a[0]+1]!=0)
	{
		for (int i=0;i<=6000;i++)
		{
			a[i]=0;
			b[i]=0;
		}
		z=y;
		y=x;
		x=z;
		cout<<"-";
		a[0]=x.size();
		b[0]=y.size();
		for (int i=0;i<x.size();i++)
		{
			a[i+1]=x[i]-'0';
		}
		for (int i=0;i<y.size();i++)
		{
			b[i+1]=y[i]-'0';
		}
		a[0]=max(a[0],b[0]);
		for (int i=1;i<=a[0];i++)
		{
			a[i]-=b[i];
			if (a[i]<0)
			{
				a[i+1]--;
				a[i]+=10;
			}
		}
	}
	while (a[a[0]]==0&&a[0]>1)a[0]--;
	for (int i=a[0];i>=1;i--)cout<<a[i];
}

回复

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

正在加载回复...