题目:输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
分析:这是网易的一道面试题。
#include<iostream>
#include<cstring>
using namespace std;
void ans(int n)
{
int small=1,big=2;
int sum=small+big;
if(n<3)
return ;
while(small<=(n-1)/2)
{
if(sum==n)
{
for(int i=small;i<=big;i++)
cout<<i<<" ";
cout<<endl;
big++;
sum+=big;
}
else if(sum<n)
{
big++;
sum+=big;
}
else
{
sum-=small;
small++;
}
}
}
int main()
{
int n;
while(cin>>n)
{
ans(n);
}
return 0;
}