sub#1可以拿4,8,13这三个样例测试
查看原帖
sub#1可以拿4,8,13这三个样例测试
1384328
feng_0108楼主2024/11/23 14:17

不清楚最后一个测试用例是什么,但是可以拿4,8,13这三个测试用例对你的程序进行检验,这是我根据点赞数第一的题解编写的代码,大家不懂得可以参考

#include<bits/stdc++.h>
using namespace std;

const int N = 10010;

int n;
bool st[N];

vector<int> mul(vector<int> a, int b)
{
	vector<int> c; int d = 0;
	for (int i = 0; i < a.size() || d; i++)
	{
		if (i < a.size()) d += a[i] * b;
		c.push_back(d % 10);
		d /= 10;
	}
	return c;
}

int main()
{
	cin >> n; 
	int sum = 0, i = 2;
	vector<int> ans = { 1 };
	for (; sum < n; i++)
	{
		sum += i; st[i] = true;
	}
	if (sum == n)
	{
		for (int j = 2; st[j]; j++) {
			ans = mul(ans, j);
			cout << j << ' ';
		}
	}
	else
	{
		int k = sum - n;
		if (k == 1)
		{
			st[2] = false;
			st[i - 1] = false; 
			st[i] = true;
		}
		else
		{
			st[k] = false;
		}
		for (int j = 2; j <= i + 1; j++) {
			if (st[j]) {
				cout << j << ' ';
				ans = mul(ans, j);
			}
		}
	}
	cout << endl;
	for (int i = ans.size() - 1; i >= 0; i--)
		cout << ans[i];
	return 0;
}
2024/11/23 14:17
加载中...