主题:今天谁问我什么事情来着?
moz
[专家分:37620] 发布于 2007-04-29 21:04:00
没看着.
回复列表 (共6个回复)
沙发
moz [专家分:37620] 发布于 2007-04-29 21:47:00
(2007-04-29 21:07:56) 人民群众(106016817)
有5个水手,分一堆椰子, 第一个把它分成了5份,藏起来一份,剩下1个,给了猴子,其它人如法炮制,第二天,5个水手把剩下的椰子集中起来,又分成5份,结果还是剩下一个,问一共有多少椰子?
板凳
moz [专家分:37620] 发布于 2007-04-29 21:52:00
i = 0
Do
i = i + 4
s = i
For j = 1 To 5
If s Mod 4 > 0 Then Exit For
s = (s \ 4) * 5 + 1
Next
Loop Until j=[color=0000ff]6[/color] 'and (s-5) mod 5=1 '后面这个条件其实是多余的.不起作用
Print s '代表最后一个条件:剩下除以5依然余1
得结果: 621 , 1246 , 1871 可以笔算验证一下.
3 楼
Matodied [专家分:7560] 发布于 2007-04-30 16:35:00
你的程序有错误,而且错误还不少。
首先,我在书上看到的答案是3121(最小的),不是621!
正确的程序应为:
CLS
i=1 '这句很重要,因为每次分完后都有一个给猴子
DO
i=i+5
s=i
FOR j=1 TO 5
IF s MOD 5<>1 THEN EXIT FOR
s=(s-1)/5*4 '每个人都藏起自己的一份,还有一个给猴子
NEXT j
LOOP UNTIL j=6
PRINT i
END
4 楼
wzc1996 [专家分:1680] 发布于 2007-04-30 20:40:00
[quote]你的程序有错误,而且错误还不少。
首先,我在书上看到的答案是3121(最小的),不是621!
正确的程序应为:
CLS
i=1 '这句很重要,因为每次分完后都有一个给猴子
DO
i=i+5
s=i
FOR j=1 TO 5
IF s MOD 5<>1 THEN EXIT FOR
s=(s-1)/5*4 '每个人都藏起自己的一份,还有一个给猴子
NEXT j
LOOP UNTIL j=6
PRINT i
END[/quote]
结果是15621
CLS
n = 6
DO
n = n + 1: s = n
FOR i = 1 TO 5
IF s MOD 5 <> 1 THEN EXIT FOR
s = (s - 1) / 5 * 4
NEXT i
IF s MOD 5 = 1 THEN PRINT n: END
LOOP
5 楼
moz [专家分:37620] 发布于 2007-04-30 22:23:00
是的,应该是3121.
我的程序里只错了一个字,
把5改成6就可以了.
我不小心把跳出循环的标志看漏了.
6 楼
moz [专家分:37620] 发布于 2007-04-30 22:29:00
我不知道你的程序是对照我的来改的,还是书上的答案,还是你自己写的.
因为它跟我写的代码有着惊人的相似,
唯一不同的,我走的是逆行,而你却是顺着算的.
所以我的代码可能会比你的快了那么一丁点(循环少了一点)
快了的这丁点完全没有比较的必要,所以你我答案可以说是一样的.
让我惊讶的,为什么如此相像?而偏偏又存在着这一丁点的差别.
我来回复