"><img border="0" alt="Free Counters" src="http://counter.arrivalcounter.com/counter/1154931660/wow";
#include <iostream> using namespace std; void main() { int N; /*1。若剩余值(n-sum)等于i,则最后输出序列为: 3、4、……、i、i+2,即将原最大序列每项加1,再将最后剩余的一个1加到最后一项上。 2。若剩余值(n-sum)小于i, 则从序列的最大项i开始,从大到小依次将每项加1,直到剩余值用完。*/ cin >> N; int i,sum = 0; for (i = 2; i < N; ++i) { if ((N - sum - i) < 0) break; sum += i; } if ((N - sum) == (i - 1)) { int m = 2; for (; m < i - 1; ++m) { cout << m + 1 << ' '; } cout << m + 2 << endl; } else if ((N - sum) < (i - 1)) { int m = 2; for(; m <= i - 1; m++) { if( i - m - 1 < N - sum) cout << m + 1 <<" "; else cout << m <<" "; } cout << endl; } }