算法練習【2】一個正整數有可能可以被表示爲n個連續正整數之和

題目

一個正整數有可能可以被表示爲n(n>=2)個連續正整數之和,如:

15=1+2+3+4+5

15=4+5+6

15=7+8

請編寫程序,根據輸入的任何一個正整數,找出符合這種要求的所有連續正整數序列。

輸入格式:
輸入一個正整數n(1≤n≤1000)

輸出格式:
輸出符合題目描述的全部正整數序列,每行一個序列,每個序列都從該序列的最小正整數開始、以從小到大的順序打印。如果結果有多個序列,按各序列的最小正整數的大小從小到大打印各序列。此外,序列不允許重複,序列內的整數用一個空格分隔,每個序列最後一個整數後要有一個空格。如果沒有符合要求的序列,輸出“None”。

輸入樣例1:
15
輸出樣例1:
1 2 3 4 5 
4 5 6 
7 8 
輸入樣例2:
16
輸出樣例2:
None

#include <stdio.h>
int main()
{
	int n = 0;
	int i = 0;
	int j = 0;
	int t = 0;
	int re = 0;
	scanf("%d",&n);
	for (i = 1; i < n; i++)
	{
		for (j = i+1; j < n; j++)
		{
			if ((i + j) * (j - i + 1) / 2 == n)
			{
				re = 1;
				for (t = i; t <= j; t++)
				{
					printf("%d ",t);
				}
				printf("\n");
			}
			
		}
	}
	
	if (re ==  0)
	{
		printf("None\n");
	}
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章