题目描述:
输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
分析:
这里要求的是连续的序列,问题就简单的多了。
#include
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;
}