POJ 1032
思路
按照2+3+4+...求和
for(i=2;n-sum>i;i++) /*利用循环并判断n-m是否<或=i*/
sum+=i;
printf("%d",2); /*= ,则利用循环打出*/
for(t=3;t<=i;t++)
printf(" %d",t);
t=n-sum; /*余几*/ /*< ,则利用循环分部打出*/
s=i-2; /*数列个数*/
k=t/s; /*平均每个数加几*/ /*若剩余大于个数,则每个数加k*/
y=t%s; /*还剩几*/ /*剩余的从大到小依次加一*/
printf("%d",2+k);
for(j=3;j<=s-y+1;j++)
printf(" %d",j+k);
for(j=s-y+2;j<=s+1;j++)
printf(" %d",j+k+1);
/**************************************************************************
                 
原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
 
*************************************************************************/