您的位置:首页 > 其它

coding - 求和为n连续正数序列

2013-07-15 19:48 274 查看
题目描述:

输入一个正数n,输出所有和为n连续正数序列。

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

分析:

这里要求的是连续的序列,问题就简单的多了。

#include <iostream>
using namespace std;

void PrintSequence(int begin, int end);

void FindContinueSeq(int n)
{
if (n < 3)
return ;
int begin = 1;
int end = 2;
int sum = begin + end;
int mid = (begin + n) >> 1;
while (begin < mid)
{
if (sum == n)
PrintSequence(begin, end);
//
while (sum > n)
{
sum -= begin;
begin++;
if (sum == n)
PrintSequence(begin, end);
}
//
end++;
sum += end;
}
}

void PrintSequence(int begin, int end)
{
for(int i = begin; i <= end; i++)
{
cout << i << " ";
}
cout << endl;
}

int main()
{
FindContinueSeq(15);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: