poj2140---herd sums

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n,cnt=0,i,j;
    scanf("%d",&n);
    for(i=1;i <= n/2+1;i++)
    {
        int sum=0;
        for(j=i;;j++)
        {
            sum+=j;
            if(sum == n)
            {
                cnt++;
                break;
            }
            if(sum>n)
                break;
        }
    }
    printf("%d\n",cnt+1);
    return 0;
}
//我不能分析出i为什么<=n/2+1,但是从n/2+1之后的序列,如果是单个,那么比n小,如果是连续的序列就都比n大,所以没必要再去遍历后面的序列
posted @ 2015-06-10 15:39  Gabyler  阅读(169)  评论(0编辑  收藏  举报