分糖果
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]; ?>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。