20分,和本地一样,求解
查看原帖
20分,和本地一样,求解
1177895
C2959668672楼主2024/4/28 16:51
#include <iostream>
#include <vector>
#include <string>
using namespace std;
bool cmp(vector<int>a,vector<int>b)
{
	if (a.size()!=b.size()) return a.size()>b.size();
	return a[a.size()-1]>=b[b.size()-1];
}
vector<int> sub(vector<int>a,vector<int>b)
{
	int len=0;
	vector<int>c;
	while(len<a.size())
	{
		if (a[len]<b[len])
		{
			c.push_back(a[len]+10-b[len]);
			a[len+1]--;
		}
		else
		{
			c.push_back(a[len]-b[len]);
		}
		len++;
	}
	while(c.size()>1&&c.back()==0)
	{
		c.pop_back();
	}
	return c;
}
int main()
{
	string s_a,s_b; cin >> s_a >> s_b;
	vector<int>a,b;
	for (int i=1;i<=s_a.size();i++) a.push_back(s_a[s_a.size()-i]-'0');
	for (int i=1;i<=s_b.size();i++) b.push_back(s_b[s_b.size()-i]-'0');
	vector<int>c;
	if (cmp(a,b))
	{
		c=sub(a,b);
		for (int i=c.size()-1;i>=0;i--) cout << c[i];
	}
	else
	{
		c=sub(b,a);
		cout << "-";
		for (int i=c.size()-1;i>=0;i--) cout << c[i];
	}
	return 0;
}
2024/4/28 16:51
加载中...