我的代码如下:
#include <iostream>
using namespace std;
int a[1005], b[1005];
int main()
{
int n;
cin >> n;
int i = 2;
while (n > i)
{
a[i - 1] = i;
n -= i;
i++;
}
i -= 2;
int j = i;
while (n != 0)
{
a[j]++;
n--;
j--;
}
b[1] = a[1];
b[0] = 1;
for (j = 2; j <= i; ++j)
{
int w = 0;
for (int k = 1; k <= b[0]; ++k)
{
b[k] = b[k] * a[j] + w;
w = b[k] / 10;
b[k] %= 10;
}
while (w != 0)
{
b[++b[0]] = w % 10;
w /= 10;
}
}
for (int j = 1; j <= i; ++j)
{
cout << a[j] << " ";
}
cout << endl;
for (int j = b[0]; j >= 1; --j)
{
cout << b[j];
}
return 0;
}