整数序列
对于任意的3个正整数N、P、Q
编程确定是否存在这样一个含N个整数的整数序列,使得序列中任意的P个连续整数之和为正,使得序列中任意的P个连续整数之和为正,而对任意Q个连续整数之和为负。
如果存在这样的序列,请输出该序列,否则输入“NO”
输入文件 input.txt 格式为 N P Q
输出文件 output.txt "NO"或满足条件的一个整数序列
________________________________
示例 input.txt output.txt
N P Q
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1 4 2 3 NO
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2 6 5 3 -3 5 -3 -3 5 -3
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
对于任意的3个正整数N、P、Q
编程确定是否存在这样一个含N个整数的整数序列,使得序列中任意的P个连续整数之和为正,使得序列中任意的P个连续整数之和为正,而对任意Q个连续整数之和为负。
如果存在这样的序列,请输出该序列,否则输入“NO”
输入文件 input.txt 格式为 N P Q
输出文件 output.txt "NO"或满足条件的一个整数序列
________________________________
示例 input.txt output.txt
N P Q
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1 4 2 3 NO
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2 6 5 3 -3 5 -3 -3 5 -3
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
序列为:a,b,c,d,e,f,g,h,i,j;
则:a+b+c>0;又a+b<0;b+c<0;
所以a>0,c>0;
而:b+c+d>0,c+d<0;
所以b>0,所以:a+b>0,b+c>0,这与a+b<0,b+c<0矛盾
更一般的可以证明,满足你的条件的序列是不存在的。
因此输出为NO;
1。当P或Q取0时,另一方可以取0到N的任何值;
2。P和Q的取之不能相同。
3。P和Q的取值具有交换率,既若P=a,Q=b成立,则P=b,Q=a也成立。
现在就这么多。
假如现在已有这样的一组数,任意m个大于0,任意n个小于0。
现在设P=m+1,Q=n,且假设新数组的取值成立。
只要在数组的最前面加让一个数使新数组成立,这样的数是存在的。
这样就可以通过递归找到所有P>m的数组了。
同理,保持P不变,也可以递归找到所有Q>n的数组了。
我猜想P或Q的取值在一个连续的范围内,从某个值开始,到另一个直结束,其间的值都成立。
上面插入的数有一个取值的范围,其个数加上下界就是成立的P或Q的最小值,加上上界就是P或Q的最大值,其间是线性的。
呵呵