/*
Time:2019.11.2
Author: Goven
type:数论:整数拆分
err:
ref:不会:https://blog.csdn.net/aidway/article/details/50896811
*/
#include<iostream>
using namespace std;
int main()
{
int n, x, i, sum;
cin >> n;
for (i = 2, sum = 2; sum <= n;) {
i++;
sum += i;
}
i--;
x = n - (i + 2) * (i - 1) / 2;
int t = i - x + 1;
if (x == i) t++;
for (int j = 2; j < t; j++) {
cout << j << " ";
}
for (int j = t + 1; j <= i; j++) {
cout << j << " ";
}
if (x == i) cout << i + 2 << " " << endl;//err1:最后结尾也要有空格
else if (x > 0) cout << i + 1 << " " << endl;//err2:这里漏了判断条件,所以n=5时错误
return 0;
}
网友评论