猴子偷桃问题

10:五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。
不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,
发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,
又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。
第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢?

 

 
 
  1. <?php  
  2. /*  
  3. 10:五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。  
  4. 不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,  
  5. 发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,  
  6. 又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。  
  7. 第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢?  
  8. 设总数为x    第0个猴子偷掉后剩下的总数  
  9. (x-1)4/5=H1  第1个猴子偷掉后剩下的总数  
  10. (H1-1)4/5=H2 第2个猴子偷掉后剩下的总数  
  11. (H2-1)4/5=H3 第3个猴子偷掉后剩下的总数  
  12. (H3-1)4/5=H4 第4个猴子偷掉后剩下的总数  
  13. (H4-1)4/5=H5 第5个猴子偷掉后剩下的总数 最后一个猴子最少把桃子分为 5堆每堆一个,还剩一个  
  14.     
  15. 剩下y=H5  
  16. *系统环境:windows/linux  
  17. *编译环境:php4/php5  
  18. *输入参数:无  
  19.  输出:out.txt  
  20. */ 
  21.  
  22. /*  
  23.     每次猴子偷吃桃子时,桃子总数为5x+1,那么它拿走了x+1,剩下4x,那 上一个猴子偷吃时的桃子总数比下一个猴子偷吃时多了x+1  
  24. */ 
  25.  
  26. for($i=6;$i < 10000;$i++)  
  27. {  
  28.     if($minTaozi=getLeftTaozi(5,$i))  
  29.     {  
  30.         break;  
  31.     }     
  32. }  
  33. //输出结果  
  34. output("min count Taozi:$minTaozi",true);  
  35. error_msg("execute success");  
  36.  
  37. function getLeftTaozi($n,$min)  
  38. {  
  39.     if($n==0)  
  40.     {  
  41.         return $min;  
  42.     }  
  43.     $left=getLeftTaozi($n-1,$min);  
  44.     if($left==false)  
  45.     {  
  46.         return false;  
  47.     }  
  48.     if($left % 4 != 0)  
  49.     {  
  50.         return false;  
  51.     }  
  52.     return $left*5/4+1;  
  53. }  
  54.  
  55. /*  
  56.     把结果输出到输出文件里  
  57.     当isClean=true时清空out.txt  
  58. */ 
  59. function output($msg,$isClean=false)  
  60. {  
  61.     if($isClean)  
  62.     {  
  63.     $handle = fopen('out.txt''w');  
  64.     fclose($handle);      
  65.     }  
  66.     error_log($msg."\n", 3, "out.txt");  
  67. }  
  68. /*  
  69.     输入错误信息  
  70.     如果$is_exit表示输入信息后退出  
  71. */ 
  72. function error_msg($msg,$is_exit=true)  
  73. {  
  74.     if($is_exit)  
  75.         die($msg."\n");  
  76.     else 
  77.         echo $msg."\n";  
  78. }  
  79. ?> 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值