连续自然数和

连续自然数和

题目大意

对一个给定的自然数,求出所有的连续的自然数段,是每个数段中的全部数之和为给定的自然数。

样例输入

10000

样例输出

18 142
297 328
388 412
1998 2002

数据范围

10 <= M <= 2,000,000

思路

直接模拟。
枚举每一个自然数段,看看和是不是n,是就输出。
就可以了。

代码

#include
#include
using namespace std;
int n,temp;
int main()
{
     
	//freopen("combo.in","r",stdin);
	//freopen("combo.out","w",stdout); 
	scanf("%d",&n);//读入
	for (register int i=1;i<=n/2;i++)//枚举自然数段的最左边
	{
     
		temp=0; 
		for (register int j=i;j<=n;j++)//枚举自然数段的最右边
		{
     
			temp+=j;
			if (temp==n) printf("%d %d\n",i,j);//输出
			else if (temp>n) break;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

你可能感兴趣的:(#,模拟,纪中题目,模拟,纪中题目)