80分求助
查看原帖
80分求助
1178146
WZRYWZWY_2楼主2024/11/22 13:10
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
char a[110000],b[110000];
int c[110000],d[110000],e[110000],x=0;
int n,nn;
int fu()
{
	if(n<nn) return 1;
	if(n==nn) 
	{
		int i=n;
		while(i--)
		{
			if(c[i]<d[i]) return 1;
		}
		return 0;
	}
	if(n>nn) return 0;
}
int main()
{
	
	scanf("%s%s",&a,&b);
	n=strlen(a);
	nn=strlen(b);
	for(int i=n-1;i>=0;i--)
	{
		c[i]=a[n-1-i]-'0';
	}
	for(int i=nn-1;i>=0;i--)
	{
		d[i]=b[nn-1-i]-'0';
	}
	for(int i=0;i<max(n,nn);i++)
	{
		if(fu()==0)
		{
			if(c[i]<d[i])
			{
				c[i+1]--;
				c[i]=c[i]+10;
			}
			e[i]=c[i]-d[i];
		}
		else
		{
			if(d[i]<c[i])
			{
				d[i+1]--;
				d[i]=d[i]+10;
			}
			e[i]=d[i]-c[i];
		}
	}
	if(fu()==1) printf("-");
	for(int i=max(n,nn)-1;i>=0;i--)
	{	
		while (e[i]==0&&i<1) 
		{
			n--;i--;
			if(e[i]!=0)
			{
				break;
			}
		}
		printf("%d",e[i]);
	}
}//我们有救了!
2024/11/22 13:10
加载中...