求调,错了一堆但是自己尝试的数据都没有问题.....
查看原帖
求调,错了一堆但是自己尝试的数据都没有问题.....
1380473
ZY_202301005129楼主2024/8/24 16:51
#include <bits/stdc++.h>
using namespace std;
vector<int> a(10001), b(10001);
void jiewei(vector<int>& a, int n)
{
	if (a[n] >= 1)
	{
		a[n]--;
		return;
	}
	else
	{
		jiewei(a, n + 1);
	}
}
bool if0(vector<int> a)
{
	vector<int> b(10001);
	if (a == b)return 1;
	else return 0;
}
int judge1(vector<int> a, vector<int> b)
{
	int a1 = 10000, b1 = 10000;
	while (!a[a1])a1--;
	while (!b[b1])b1--;
	if (a1 > b1)return 1;
	if (a1 < b1)return -1;
	for (int i = a1;i >= 1;i--)
	{
		if (a[i] > b[i])return 1;
		if (a[i] < b[i])return -1;
	}
	return 0;
}
vector<int> operator-(vector<int> a, vector<int> b)
{
	vector<int> c(10001);
	c = a;
	int a1=10000, b1=10000;
	while (!a[a1])a1--;
	while (!b[b1])b1--;
	for (int i = a1;i >= 1;i--)
	{
		if (c[i] >= b[i])
			c[i] -= b[i];
		else
		{
			c[i] = c[i] - b[i] + 10;
			jiewei(c, i + 1);
		}
	}
	return c;
}
int main()
{
	string a1, b1;
	cin >> a1 >> b1;
	for (int i = 1;i <= a1.size();i++)
		a[i] = a1[a1.size() - i]-'0';
	for(int i=1;i<=b1.size();i++)
		b[i] = b1[b1.size() - i] - '0';
	if (judge1(a, b) == -1)
	{
		vector<int> c(10001);
		c = a;
		a = b;
		b = c;
	}
	while (1)
	{
		vector<int> c(10001);
		if (a==b)
		{
			int a1 = 10000;
			while (!a[a1])a1--;
			for (int i = a1;i >= 1;i--)
				cout << a[i];
			return  0;
		}
		c = a - b;
		if (judge1(b, c) == 1)
		{
			a = b;
			b = c;
		}
		else 
		{
			a = c;
		}
	}
}
2024/8/24 16:51
加载中...