和为n连续正数序列

题目:输入一个正数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;
}

猜你喜欢

转载自blog.csdn.net/shuangyueliao/article/details/53984403