題目
一個正整數有可能可以被表示爲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;
}