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);

你可能感兴趣的:(poj)