Perl关于分椰子的趣味问题
话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子!
大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先晚上某个家伙悄悄的起床,悄悄的将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄悄的藏了一份,然后把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了
过了会儿,另一个家伙也悄悄的起床,悄悄的将剩下的椰子分成5份,结果发现多一个椰子,顺手就又给了幸运的猴子,然后又悄悄滴藏了一份,把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了
又过了一会
又过了一会
总之5个家伙都起床过,都做了一样的事情。
早上大家都起床,各自心怀鬼胎的分椰子了,这个猴子还真不是一般的幸运,因为这次把椰子分成5分后居然还是多一个椰子,只好又给它了.问题来了,这堆椰子最少有多少个?
计算方式: a(n+1)=(a(n)-1)/5*4
用数组来解不要太合适:
1 #!/usr/bin/perl -w 2 use strict; 3 4 my $cnt=6; 5 my @arr=(1,); 6 my $find=0; 7 until($find){ 8 foreach(0..$cnt-2){ 9 $arr[$_+1]=($arr[$_]-1)/5*4; 10 } 11 if(int($arr[-1])==$arr[-1] && $arr[-1]%5==1){ 12 print "@arr\n"; 13 } 14 $arr[0]+=5; 15 }
输出数组如下:
最少有 15621个椰子,不得不吐槽一下这变异椰子树,还有那头不知道从哪里冒出来的牛