80分请教大佬orz
查看原帖
80分请教大佬orz
398155
某kob在此楼主2021/8/29 19:13
# include <bits/stdc++.h>
using namespace std; 

char a1[50000], b1[50000];
int alen, blen, flag, brea;
int a2[50000], b2[50000], ans[50000];

int main(void)
{
	cin >> a1;
	cin >> b1;
	
	alen = strlen(a1);
	blen = strlen(b1);

	if (alen > blen)
	{
		flag = 0;
		brea = 1;
	}
	else
		for (int i = 0; i <= alen; i ++)
			if (a1[i] != b1[i])
			{
				brea = 1;
				if (a1[i] > b1[i])	flag = 0;
				else	flag = 1;
				break;
			}
	if (!brea)
	{
		cout << 0 << endl;
		return 0;
	}
	
	for (int i = 1; i <= alen; i ++)
		a2[i] = a1[alen - i] - '0';
	for (int i = 1; i <= blen; i ++)
		b2[i] = b1[blen - i] - '0';
	
	if (!flag)
		for (int i = 1; i <= alen; i ++)
		{
			ans[i] = a2[i] - b2[i];
			if (flag)
				ans[i] --;
			flag = 0;
			if (ans[i] < 0)
			{
				ans[i] += 10;
				flag = 1;
			}
		}
	else
		for (int i = 1; i <= blen; i ++)
		{
			ans[i] = b2[i] - a2[i];
			if (!flag)
				ans[i] --;
			flag = 1;
			if (ans[i] < 0)
			{
				ans[i] += 10;
				flag = 0;
			}
		}
	
	if (flag)	cout << "-";
	flag = 0;
	for (int i = max(alen, blen); i >= 1; i --)
	{
		if (flag)
			cout << ans[i];
		else
			if (ans[i] != 0)
			{
				flag = 1;
				cout << ans[i];
			}
	}
	cout << endl;
	
	return 0;
}

我是个傻子

2021/8/29 19:13
加载中...