和为 n 连续正数序列

来源:互联网 发布:蜂窝数据开关 编辑:程序博客网 时间:2024/04/29 05:30
题目:输入一个正数 n,输出所有和为 n 连续正数序列。

例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、4-6 和 7-8。

思路:我们再找连续的序列,那么我们从最小的一直往前加,如果和结果相等,那么这是一个符合条件的序列,然后再连续的往后加,如果和比结果小,那么一直往后加,如果比结果大,那么需要取出前面小的值,因为后面大的值是刚添加上的

void Sum(int sum){int i,j,cur=0;int count=0;for(i=0;i<=sum/2+sum%2;){if(cur <= sum){if(cur == sum){for(j=i-count+1;j<=i;j++)cout<<j<<" ";cout<<endl;}i++;cur += i;count++;}else{count--;cur = cur-(i-count);}}}


1 0