社区讨论

求助

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m2g8suiq
此快照首次捕获于
2024/10/19 22:16
去年
此快照最后确认于
2025/11/04 16:47
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

string a, b;
long long ia[100001];
long long ib[100001];
long long ic[100001];

bool smaller(string a, string b)
{
	if (a.size() != b.size())
	{
		return a.size() < b.size();
	}
	return a < b;
}

main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> a >> b;
	long long la = a.size();
	long long lb = b.size();

	if (smaller(a, b))
	{
		cout << '-';
		swap(a, b);
	}



	for (long long i = 0; i < la; i++)
		ia[i] = a[la - 1 - i] - '0';
	for (long long i = 0; i < lb; i++)
		ib[i] = b[lb - 1 - i] - '0';

	

		long long lc = max(la, lb);
	for (long long i = 0; i < lc; i++)
	{
		ic[i] = ia[i] - ib[i];
		if (ic[i] < 0)
		{
			ia[i + 1]--;
			ic[i] = ic[i] + 10;
		}
	}

	while (lc > 1 && ic[lc - 1] == 0)
	{
		lc--;
	}
	for (long long i = lc - 1; i >= 0; i--)
		cout << ic[i];
	cout << endl;

	return 0;
}

60分

回复

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

正在加载回复...