分糖果

10个小孩围成一圈。老师分个

1:10块糖

2:2块

3:8块

4:22块

5:16快

6:4块

7:10块

8:6块

9:14块

10:20块


然后所有的的小孩同时把手中的糖分一半给右边的小孩。糖块为奇数的可向

老师要一块。经过几次后手中的糖的块数一样多。每人各几块糖

<?phpheader("Content-Type: text/html; charset=utf-8");/*分糖果10个小孩围成一圈。老师分个1:10块糖2:2块3:8块4:22块5:16快6:4块7:10块8:6块9:14块10:20块然后所有的的小孩同时把手中的糖分一半给右边的小孩。糖块为奇数的可向老师要一块。经过几次后手中的糖的块数一样多。每人各几块糖*//*$i = array()来存每个小孩手中的糖*/?><?php $arr = array(10,2,8,22,16,4,10,6,14,20);//小孩手中的糖 $times = 0;//分糖字数 //如果小孩的手中糖一样就停止 //就是判断相邻的2个小孩一样就 +1.如果+到10就说明相等 function isSame($arr){ $shu =0; $b = false; for($j=0;$j< (sizeof($arr)-1) ;$j++){ if($arr[$j] == $arr[$j+1]){ $shu ++; } if($shu == (sizeof($arr)-1)){ $b =true; }else{ $b = false; } //return $shu; } return $b;//判断是否相等。如果相等就返回1 } $true = 0;//用来判断糖块是否一样默认是不一样 //echo isSame($arr); while($true <1){ $b =true; $m = $arr[9]; //第10个小孩手中的糖 主要是防止被覆盖 //第一次分糖后小孩手中的糖的数量 //第2位糖的数量 = 第一位的/2+自己的/2 //第3位糖的数量 = 第2位/+自己的/2 for($n =9;$n>0;$n--){ $arr[$n] = $arr[$n-1]/2 + $arr[$n]/2; } $arr[0] = $m/2 + $arr[0]/2; $times++; for($j =0;$j<10;$j++){ if($arr[$j] %2 != 0){ $arr[$j] +=1; //奇数就要一个糖 } } echo '第'.$times.'次分糖后小孩手中的糖块'; for($mm=0;$mm<sizeof($arr);$mm++){ echo $arr[$mm].' '; } echo '<br />'; //return $arr; if( isSame($arr) == 1 ) $true = 1;//判断一样的时候 //echo $true; } echo '分糖分了'.$times.'次<br />'; echo '每个小孩最后分到的糖是:'.$arr[0]; ?>