很多整数可以由一段连续的正整数序列(至少两个数)相加而成,比如 25=3+4+5+6+7=12+1325=3+4+5+6+7=12+13。
输入一个整数 NN,输出 NN 的全部正整数序列,如果没有则输出 NONE
。
输入格式
一个整数 NN。
输出格式
每行输出一个满足条件的整数序列。
序列内部元素从小到大排序。
优先输出首项更小的序列。
数据范围
2≤N≤1072≤N≤107
输入样例:
25
输出样例:
3 4 5 6 7
12 13
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
n *= 2;
int cnt = 0;
for (int x = sqrt(n); x > 1; x -- )
if (n % x == 0)
{
int y = n / x;
int k = x;
int t = y - (x - 1);
if (t % 2 == 0)
{
int a = t / 2;
for (int j = a; j < a + k; j ++ )
printf("%d ", j);
puts("");
cnt ++ ;
}
}
if (!cnt) puts("NONE");
return 0;
}