连续和
题目描述
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写
程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入
只有一行,一个正整数n。对于100%的数据,n<10^6
输出
输出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序
打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列
内的整数用一个空格分隔。 如果没有符合要求的序列,输出“NONE”。
样例输入
【样例1】
15
【样例2】
8
样例输出
【样例1】1 2 3 4 5 4 5 6 7 8
【样例2】NONE
题解:
无题解,如果有问题可以发在评论圈内或私信我。
(自我认为这题挺简单的)
源代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int number,sg=1,i,j,n;
scanf("%d",&number);
for(i=number/2; i>1; i--) {
if(i%2==0) {
if((number-i/2)%i==0) {
n=(number-i/2)/i-i/2+1;
if(n<1)continue;
sg=0;
for(j=0; j<i; j++) printf("%d ",n+j);
printf("\n");
}
} else {
if(number%i==0) {
n=number/i-i/2;
if(n<1) continue;
sg=0;
for(j=0; j<i; j++) printf("%d ",n+j);
printf("\n");
}
}
}
if(sg==1) printf("NONE\n");
return 0;
}