找回密码
 加入
搜索
查看: 13728|回复: 30

[效率算法] 海盗分椰子的问题

 火... [复制链接]
发表于 2012-11-8 12:01:51 | 显示全部楼层 |阅读模式
话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子

大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先.

晚上某个家伙悄悄滴起床,悄悄滴将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄悄滴藏了一份,然后把剩下滴椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.

过了会儿,另一个家伙也悄悄滴起床,悄悄滴将剩下滴椰子分成5份,结果发现多一个椰子,顺手就又给了幸运的猴子,然后又悄悄滴藏了一份,把剩下滴椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.

又过了一会 ...
...

又过了一会 ...

总之5个家伙都起床过,都做了一样的事情

早上大家都起床,各自心怀鬼胎的分椰子了,这个猴子还真不是一般的幸运,因为这次把椰子分成5分后居然还是多一个椰子,只好又给它了.

问题来了,这堆椰子最少有多少个?

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +30 收起 理由
seeyou + 30 下限设的很好,效率很高。

查看全部评分

发表于 2012-11-8 13:42:08 | 显示全部楼层

Func test($num, $level = 1)
        $curr = $num * 5 + 1
        If $level = 6 Then
                Return $curr
        Else
                Return test($curr, $level + 1)
        EndIf
EndFunc

MsgBox(0,0,test(1))


貌似是这样?

评分

参与人数 1金钱 +20 收起 理由
3mile + 20 多谢参与

查看全部评分

发表于 2012-11-8 13:45:25 | 显示全部楼层
回复 1# 3mile


    看不懂,貌似我的错了?
发表于 2012-11-8 15:23:18 | 显示全部楼层
本帖最后由 annybaby 于 2012-11-8 15:52 编辑

回复 1# 3mile

15621
递归不熟悉,用最笨的办法

Local $x=6
Do 
        $x+=5
        
Until Mod((((((((($x-1)*0.8-1)*0.8)-1)*0.8)-1)*0.8-1)*0.8-1),5)=0
MsgBox(0,0,$x)
15621
31246
46871
62496
78121
93746
109371
124996
140621
156246
171871
187496
203121
218746
234371
249996
265621
281246
296871
312496
328121
343746
359371
374996
390621
406246
421871
437496
453121
468746
484371
499996
515621
531246
546871
562496
578121
593746
609371
624996
640621
656246
671871
687496
703121
718746
734371
749996
765621
781246
796871
812496
828121
843746
859371
874996
890621
906246
921871
937496
953121
968746
984371
999996
..........

评分

参与人数 1金钱 +40 收起 理由
3mile + 40 学习了

查看全部评分

发表于 2012-11-8 15:35:04 | 显示全部楼层
本帖最后由 edisonx 于 2012-11-8 16:20 编辑


const $x0 = 1 ; Limited : Nature Number
$Ans = $x0* ( 5^5 )-4
MsgBox(0, "Ans=", $Ans)
請教,如何使 code high-lighting ? 謝謝。

------ 補充,這意念可能比較顯示得出概念 ---------

#include <array.au3>

const $AnsCount = 100
Dim $Ans[$AnsCount]

For $i = 1 To $AnsCount
        $Ans[$i-1] = $i * (5^5) - 4
Next

_ArrayDisplay($Ans, "Ans")
[0]|3121
[1]|6246
[2]|9371
...
下略

评分

参与人数 1金钱 +40 收起 理由
3mile + 40 学习了

查看全部评分

发表于 2012-11-8 15:54:40 | 显示全部楼层
回复 5# edisonx

把你插入代码时用的code替换成au3即可
发表于 2012-11-8 16:14:20 | 显示全部楼层
回复 6# annybaby


    感謝您 :) 沒 high-light 看碼好痛苦
发表于 2012-11-8 16:30:17 | 显示全部楼层
Dim $i = 0
Dim $total

Do
        $i = $i + 1
        $total = tg($i)
Until IsInt($total)

MsgBox(0, "答案", "椰子最少有 " & $total & "个。")

Func tg($e)
        Local $a, $b, $c, $d, $f
        $d = (5 * $e) / 4 + 1 / 4
        $c = (5 * $d) / 4 + 1 / 4
        $b = (5 * $c) / 4 + 1 / 4
        $a = (5 * $b) / 4 + 1 / 4
        $f = 5 * $a + 1
        Return $f
EndFunc   ;==>tg

评分

参与人数 1金钱 +25 收起 理由
3mile + 25 学习了

查看全部评分

发表于 2012-11-8 16:57:16 | 显示全部楼层
顶顶,看看,,,
发表于 2012-11-8 19:55:19 | 显示全部楼层
重新研究了下

Func test($num, $level = 1)
        If Mod($num,4) Then Return false
        $curr = $num * 5 / 4 + 1
        If $level = 5 Then
                Return $curr
        Else
                Return test($curr, $level + 1)
        EndIf
EndFunc

For $i = 1 To 9999999
        If test($i * 5 + 1) == False Then ContinueLoop
        MsgBox(0,0,test($i * 5 + 1))
        ExitLoop
Next

评分

参与人数 1金钱 +40 收起 理由
3mile + 40 学习了

查看全部评分

发表于 2012-11-8 21:51:51 | 显示全部楼层
楼主很爱好算法啊。



Local $max = 6 ^ 6
For $i = 5 To $max Step 5
        $final = $i + 1
        If(find($final, 6))Then
                MsgBox(0, "", $final)
                Exit
        EndIf
Next

Func find($total, $level)
        If($level = 1)Then Return True
        If Mod($total ,5) <> 1 Then Return False
        Return find(($total - 1)/5 * 4, $level - 1)
EndFunc

评分

参与人数 1金钱 +30 收起 理由
3mile + 30 学习了

查看全部评分

发表于 2012-11-8 22:02:13 | 显示全部楼层
回复 11# seeyou

3121结果是不对的哦,楼主的是对的~~

评分

参与人数 1金钱 +30 收起 理由
seeyou + 30 very good

查看全部评分

 楼主| 发表于 2012-11-8 22:18:19 | 显示全部楼层
回复 11# seeyou
今天加分已经到上限了,明日补上
发表于 2012-11-8 22:21:59 | 显示全部楼层
回复 12# annybaby
annybaby 很厉害,我错了,我忘了分最后一次了。
If($level = 1)Then Return True
改成
If($level = 0)Then Return True

评分

参与人数 2金钱 +20 收起 理由
3mile + 10 正解
annybaby + 10 呵呵~~

查看全部评分

发表于 2012-11-9 00:17:59 | 显示全部楼层
回复 14# seeyou

原来我也以为是的,但计算出来后抱着严谨的态度,我重新将得到的结果代进去往下推,发现错了,才重新思考的~~
PS:最近发文多了,大洋也多了些,哈哈~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-5 15:25 , Processed in 0.119044 second(s), 35 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表