分糖果
10个小孩围成一圈。老师分个
1:10块糖
2:2块
3:8块
4:22块
5:16快
6:4块
7:10块
8:6块
9:14块
10:20块
然后所有的的小孩同时把手中的糖分一半给右边的小孩。糖块为奇数的可向
老师要一块。经过几次后手中的糖的块数一样多。每人各几块糖
<?php
header("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];
?>
转载于:https://blog.51cto.com/onlinestores/1352731