主题:整数分解^来者有分^整数分解^来者有分^整数分解^来者有分^整数分解^来者有分^整数分解^来者有分
593170024
[专家分:500] 发布于 2010-09-23 16:15:00
题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入数据:一个正整数,以命令行参数的形式提供给程序。
输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出“NONE”。
例如,对于15,其输出结果是:
1 2 3 4 5
4 5 6
7 8
最后更新于:2010-10-07 00:43:00
回复列表 (共20个回复)
11 楼
593170024 [专家分:500] 发布于 2010-10-03 23:57:00
输出是这个
-3.5714285714285721E-0001 5.6428571428571428E+0000
5.0000000000000000E-0001 5.5000000000000000E+0000
3.5000000000000000E+0000 6.5000000000000000E+0000
7.5000000000000000E+0000 8.5000000000000000E+0000
我晕~
每次都是这个
不知是不是这样
不是 B-A/2+1
是 (b-a)\2 +1
?
12 楼
cgl_lgs [专家分:21040] 发布于 2010-10-04 00:21:00
[quote]输出是这个
-3.5714285714285721E-0001 5.6428571428571428E+0000
5.0000000000000000E-0001 5.5000000000000000E+0000
3.5000000000000000E+0000 6.5000000000000000E+0000
7.5000000000000000E+0000 8.5000000000000000E+0000
我晕~
每次都是这个
不知是不是这样
不是 B-A/2+1
是 (b-a)\2 +1
?[/quote]
嗯
13 楼
593170024 [专家分:500] 发布于 2010-10-04 00:24:00
这次这样改了
var
a,k:longint;
b:real
begin
readln(k);
for a:= k div 2 downto 2 do
b:=0;
begin
if (k mod a =0) then
begin
b:=k / a;
writeln((b-a) / 2,(b+a) / 2);
end
else
begin
if k mod a =1 then
begin
b:=k / a;
writeln((b-a) / 2+1,(b+a) / 2);
end;
end;
end;
end.
我吐血
变这样了
-1.42857142857143E+000 4.57142857142857E+000
-1.00000000000000E+000 4.00000000000000E+000
1.00000000000000E+000 4.00000000000000E+000
3.75000000000000E+000 4.75000000000000E+000
14 楼
cgl_lgs [专家分:21040] 发布于 2010-10-04 15:22:00
b:real
改為:
b:longint
15 楼
593170024 [专家分:500] 发布于 2010-10-04 16:58:00
这样应是这个
var
a,k,b:longint;
begin
assign(output,'shuitimu3.out');
rewrite(output);
readln(k);
for a:= k div 2 downto 1 do
begin
if (k mod a =0) then
begin
b:=k div a;
writeln((b-a) / 2,(b+a) / 2);
end
else
begin
if k mod a =1 then
begin
b:=k div a;
writeln((b-a) / 2+1,(b+a) / 2);
end;
end;
end;
close(output);
end.
/是实型
打印出这个
-1.5000000000000000E+0000 4.5000000000000000E+0000
-1.0000000000000000E+0000 4.0000000000000000E+0000
1.0000000000000000E+0000 4.0000000000000000E+0000
3.5000000000000000E+0000 4.5000000000000000E+0000
7.0000000000000000E+0000 8.0000000000000000E+0000
16 楼
593170024 [专家分:500] 发布于 2010-10-04 17:00:00
不加括号是这个
-1.5000000000000000E+0000 4.5000000000000000E+0000
-1.0000000000000000E+0000 4.0000000000000000E+0000
1.0000000000000000E+0000 4.0000000000000000E+0000
3.5000000000000000E+0000 4.5000000000000000E+0000
7.0000000000000000E+0000 8.0000000000000000E+0000
17 楼
cgl_lgs [专家分:21040] 发布于 2010-10-04 23:46:00
我12樓不是說了么:
是(b-a)\2 +1
也就是說要做整除操作:)
18 楼
593170024 [专家分:500] 发布于 2010-10-06 22:15:00
还是看不懂
19 楼
phile [专家分:2310] 发布于 2010-10-26 21:17:00
麻烦
var i,k,n,m,t:longint;
f:boolean;
begin
readln(n);
f:=false;
for i:=1 to (n div 2 +1) do
begin
t:=i;
k:=i;
while k<n do
begin
t:=t+1;
k:=k+t;
end;
if k=n then
begin
f:=true;
for m:=i to t do write(i,' ');
writeln;
end;
end;
if not f then writeln('None');
end.
20 楼
phile [专家分:2310] 发布于 2010-10-26 21:27:00
穷举就够了
我来回复