关闭

和为n连续正数序列

58人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41614次
    • 积分:2002
    • 等级:
    • 排名:第19975名
    • 原创:179篇
    • 转载:29篇
    • 译文:0篇
    • 评论:2条
    最新评论