高精减法捞 ,悬关
查看原帖
高精减法捞 ,悬关
959582
dongrunxuan楼主2024/1/4 19:55

rt

#include<bits/stdc++.h>
using namespace std;
const int maxn=10100;
int a[maxn],b[maxn],c[maxn];
int la,lb,lc;
bool cmp()
{
	if(la!=lb)
	{
		return la>lb;
	}
	for(int i=la-1;i>=0;i--)
	{
		if(a[i]!=b[i])
		{
			return (a[i]>b[i]);
		}
	}
	return 1;
}
void sub()
{
	for(int i=0;i<lc;i++)
	{
		if(a[i]<b[i])
		{
			a[i+1]--;
			a[i]+=10;
		}
		c[i]=a[i]-b[i];
	}
	while(lc&&c[lc]==0)
	{
		lc--;
	}
	return ;
}
int main()
{
	string q,w;
	cin>>q>>w;
	la=q.size(),lb=w.size(),lc=max(la,lb);
	for(int i=la-1;i>=0;i--)
	{
		a[la-1-i]=q[i]-'0';
	}
	for(int i=lb-1;i>=0;i--)
	{
		a[lb-1-i]=w[i]-'0';
	}
	if(!cmp())
	{
		swap(a,b);
		cout<<"-";
	}
	sub();
	for(int i=lc;i>=0;i--)
	{
		cout<<c[i];
	}
	return 0;
}
2024/1/4 19:55
加载中...