ボトル交換問題のコード実装

2214 ワード

昨日家で用事がなくて小さい人の本を読んで、1つの瓶が酒を交換する問題を発見して、考えてみるとやはりとても面白いと思って、そこでこの文章は誕生しました.
質問:店でお酒を10本買いました.空き瓶3本ごとにビールを1本交換できます.最大何本飲めますか.
<?php
/*     10  , 3         ,         ?*/

$empty = '3';   //    
$bottle = '10'; //    
$wine = '10';  //     

$bottle = intval($bottle/$empty)+$bottle%$empty+$bottle;
$wine += intval($bottle/$empty); //       14 
if ($bottle%$empty=='2'){ //                
    $wine++;
}
echo $wine;

/*     */
$empty = '3';   //    
$bottle = '10'; //    
$wine = '10';  //     

while($bottle>=2){ //if $bottle=2 ,        ,      
$bottle-=2;  //$bottle-3+1
++$wine;	
}
echo $wine;
?>


精錬すると通解の問題になりますが、もちろん、相変わらず例にすぎません.
 
<form action="bottom.php" method="post">
  :<input type=text name=bottom >
         :<input type=text name=viv >
<br/><input type=submit value="  ">
<input type=reset value="  ">
</form>
 
bottom.php
<?php

class bottom
{
        public $total; //       
        public $viv; //$viv              
        public $sum; //        
        public $bottom;
        function __construct($total,$viv){
        $this->total=$total;
        $this->viv=$viv;
}

        function total()
        {
                $bottom=$this->total;
                $sum=0;
                while($this->total>=$this->viv-1)
                {
                        $this->total=($this->total-$this->viv+1);
                        ++$sum;
                }
                echo '     ';
                echo $sum+$bottom.'  ';
        }
}

@$bottoma=$_POST["bottom"];
@$viva=$_POST["viv"];
$diddo=new bottom($bottoma,$viva);
$diddo->total();
?>