主题:问题
我是疑问
[专家分:0] 发布于 2006-12-06 19:19:00
求若干个连续的自然数,使这些自然数之和为1000。
回复列表 (共6个回复)
沙发
超大问号 [专家分:60] 发布于 2006-12-06 19:27:00
1) N(1----1000)
2)求A
3)判断A是否是整数 AND A》0------------?
4)IF ———— AND ———————— THEN
FOR I=A TO A+N-1
?I
NEXT I
?
END IF
正确答案:
CLS
FOR N=1 TO 1000
A=(1000-(1+(N-1))*(N-1)/2)/N
IF INT(A)=A AND A》0 THEN
FOR I=A TO A+N-1
?I;
NEXT I :END IF
NEXT N
END
板凳
雪光风剑 [专家分:27190] 发布于 2006-12-14 00:51:00
[quote]1) N(1----1000)
2)求A
3)判断A是否是整数 AND A》0------------?
4)IF ———— AND ———————— THEN
FOR I=A TO A+N-1
?I
NEXT I
?
END IF
正确答案:
CLS
FOR N=1 TO 1000
A=(1000-(1+(N-1))*(N-1)/2)/N
IF INT(A)=A AND A》0 THEN
FOR I=A TO A+N-1
?I;
NEXT I :END IF
NEXT N
END[/quote]
这哪叫正确答案……
题目没要求从1开始!
要穷举的话根本应该用双循环的
for n=1 to 998
for m=n+1 to 999
s=(1000-(n+(m-n))*(m-n)/2)/(m-n+1)
if s=int(s) and s>0 then
?
for i=s to m-n+1
?i,
next i
end if
next m
next n
3 楼
moz [专家分:37620] 发布于 2006-12-14 12:13:00
楼上有所不知,
那的确是正确答案,事实可以证明的.
但他用了三次 n-1
而且梯形公式用得不太妥当 (1+(n-1))
具体原理可以自己先行琢磨一下.
不明白可以提问.
双循环当然也能得出答案,
但速度与时间方面是有差别的.
但问题是你的梯形公式却更是很有问题
s=(1000-(n+(m-n))*(m-n)/2)/(m-n+1)
你把问题复杂化了,我都看不清楚是不是正确的了.
但我运行了一下,结果证明是不可行的.
4 楼
雪光风剑 [专家分:27190] 发布于 2006-12-17 09:46:00
[quote]楼上有所不知,
那的确是正确答案,事实可以证明的.
但他用了三次 n-1
而且梯形公式用得不太妥当 (1+(n-1))
具体原理可以自己先行琢磨一下.
不明白可以提问.
双循环当然也能得出答案,
但速度与时间方面是有差别的.
但问题是你的梯形公式却更是很有问题
s=(1000-(n+(m-n))*(m-n)/2)/(m-n+1)
你把问题复杂化了,我都看不清楚是不是正确的了.
但我运行了一下,结果证明是不可行的.[/quote]
谢谢我重新整理一下思路
5 楼
chyx [专家分:450] 发布于 2007-03-29 18:53:00
cls
p=1
do
t=p:s=0:p=p+1
do
s=s+t:t=t+1
loop s>=1000
if s=1000 then ? p;"-";t-1:end
loop
6 楼
Lovely哆啦 [专家分:1360] 发布于 2007-03-30 21:32:00
cls
for i=1 to 1000\2
for j=1 to 1000\2
if (i+j)*(j-i+1)/2=1000 then ? i;"--";j
next j,i
end
注释:I模拟的是首项
J模拟的是外项
根据高斯(首项+外项)*项数/2的公式得出的IF
我来回复