<?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;
}
?>
PHP---渔夫打鱼问题
最新推荐文章于 2022-03-13 08:38:30 发布