#include<iostream>
using namespace std;
int n, a[1000], size_s = 0, s[20000];
void accumultiply(int n)
{
int i, j, temp = 0;
for (i = 0; i <= size_s; i++)
{
s[i] = s[i] * n + temp;
temp = s[i] / 10;
s[i] %= 10;
}
while (temp)
{
size_s++;
s[size_s] = temp % 10;
temp /= 10;
}
}
int main()
{
s[0] = 1;
int k, m = 0;
cin >> n;
for (k = 2; m <= n; k++)
m += k;
k--;
m -= k;
k--;
n -= m;
for (int i = 2; i <= k; i++)
a[i] = i;
for (;;)
for (int i = k; i >= 2; i--)
{
if (n <= 0)
goto A;
else
{
a[i] += 1;
n--;
}
}
A:;
for (int i = 2; i <= k; i++)
{
cout << a[i] << ' ';
accumultiply(a[i]);
}
cout << endl;
for (int i = size_s; i >= 0; i--)
cout << s[i];
return 0;
}
洛谷P1249 最大乘积进阶解法
最新推荐文章于 2023-01-19 19:53:30 发布