1、和为s的连续正数序列
#include<iostream>
using namespace std;
void printSequence(int start,int end)
{
for(int i = start; i<=end; i++)
{
printf("%d",i);
}
printf("\n");
}
void findSerialSequence(int num)
{
if(num<3)
{
return;
}
int begin = 1;
int end = 2;
int midden = (num+1)/2;
int curSum = begin+end;
while(begin<midden)//begin增加到给定值得中值时,end必定在begin的右边,此时及以后begin+end的值必然大雨给定的值,
{
if( curSum == num)
{
printSequence(begin,end);
}
while(curSum>num&&begin<midden)
{
curSum -= begin;
begin++;
if( curSum == num)
{
printSequence(begin,end);
}
}
end++;
curSum +=end;
}
}
int main()
{
findSerialSequence(15);
return 0;
}