3mile 发表于 2012-11-8 12:01:51

海盗分椰子的问题

话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子

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

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

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

又过了一会 ...
...

又过了一会 ...

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

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

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

**** Hidden Message *****

drunk 发表于 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))


貌似是这样?

drunk 发表于 2012-11-8 13:45:25

回复 1# 3mile


    看不懂,貌似我的错了?

annybaby 发表于 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
..........

edisonx 发表于 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")

|3121
|6246
|9371
...
下略

annybaby 发表于 2012-11-8 15:54:40

回复 5# edisonx

把你插入代码时用的code替换成au3即可

edisonx 发表于 2012-11-8 16:14:20

回复 6# annybaby


    感謝您 :) 沒 high-light 看碼好痛苦

haijie1223 发表于 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

wsfda 发表于 2012-11-8 16:57:16

顶顶,看看,,,

drunk 发表于 2012-11-8 19:55:19

重新研究了下{:face (361):}

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

seeyou 发表于 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

annybaby 发表于 2012-11-8 22:02:13

回复 11# seeyou

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

3mile 发表于 2012-11-8 22:18:19

回复 11# seeyou
今天加分已经到上限了,明日补上

seeyou 发表于 2012-11-8 22:21:59

回复 12# annybaby
annybaby 很厉害,我错了,我忘了分最后一次了。
If($level = 1)Then Return True
改成
If($level = 0)Then Return True

annybaby 发表于 2012-11-9 00:17:59

回复 14# seeyou

原来我也以为是的,但计算出来后抱着严谨的态度,我重新将得到的结果代进去往下推,发现错了,才重新思考的~~
PS:最近发文多了,大洋也多了些,哈哈~~
页: [1] 2 3
查看完整版本: 海盗分椰子的问题