51.和为n连续正数序列(数组)。
题目:输入一个正数n,输出所有和为n连续正数序列。
题目:输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
//coder:LEE 20120330
#include<iostream>
#include<cassert>
using namespace std ;
void Print(int start,int end){
for (int i=start;i<=end;i++){
cout<<i<<" ";
}
cout<<endl;
}
void OutPutSumOfSequenceEquelN(int n){
assert(n>0);
int start=1;
int end=1;
int sum=1;
while(1){
if (sum<n){
end++;
sum+=end;
}
else if(sum>n){
sum-=start;
start++;
}
else
{
Print(start,end);
end++;//don't forget
sum+=end;
}
if(end>=n)
break;
}
}
int main()
{
OutPutSumOfSequenceEquelN(1);
return 1;
}