PHP---渔夫打鱼问题

<?php
/*渔夫出海打鱼,收获若干
a)渔夫卖掉一半的鱼,然后送给隔壁的海伦3条,
b)渔夫又卖掉了剩下的鱼的3分之2,自己又吃了一条,
c)海伦来看渔夫,问他那天打了多少鱼,渔夫数了数,
家里还剩4条鱼,渔夫对海伦怎么说呢?
*/

$total=8;//至少有8条(剩4条,给3条,吃1条)
/*当要求这个不确定的总数时,先假定这个总数的一个可能最小值,
再把这个总数慢慢往上加,知道满足某一条件为止*/
$left=0;/*最后剩余的条数,题目中最后剩余4条,
可作为判断条件,当剩余的条数不是4条的时候说明total不正确*/
$firstleft=0;
while($left!=4){
$firstleft=$total/2-3;//第一次剩下的鱼
/*还要再卖掉2/3,也就是说还剩余1/3,
首先判断目前剩余的条数是否是3的倍数*/
if($firstleft%3==0){
//若是3的倍数,才存在卖掉2/3,还剩余1/3
$left=$firstleft/3-1;//卖掉鱼后剩下的-1=最后剩下的鱼数
//判断最后是否剩余4条
    if($left==4){
echo '一共打了'.$total.'条鱼';
                }
    }
/*在不满足剩余数量是3的倍数,或不满足最后剩余4条的情况下,
都说明刚刚假设的total不正确。total自增,且每次增加2条,
因为刚刚开始就要卖掉鱼的1/2,说明total是2的倍数*/
$total+=2;
}


?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值