数学问题

今天碰到一个有意思的数学问题。想了半天终于搞定。
但是如何用代码解决这个问题呢?忙了一中午,搞定了一个。

问题一:称鸡蛋的问题

原题

100个鸡蛋,每袋装10个,其中九个袋里装的鸡蛋每个都是50克,
另一个袋里装的每个都是40克。这10个袋子混在一起,只准用秤称一次,
你能找出哪一个袋里装的是40克重的鸡蛋?

小明的称法:先给这10袋鸡蛋别人编上1~10号,然后从第1袋中拿出1个鸡蛋,
从第2袋中拿出2个鸡蛋,以此类推,然后称出这55个鸡蛋的重量,就能确定出哪一个袋里
装的是40克重的鸡蛋。

代码部分

<div class="container ">
  <div class="header"><h1>小明称鸡蛋的问题</h1></div>
<h4>
<table border="1" cellpadding="10">

<tr>
    <td bgcolor="#cccccc" align="center" width="100">编号</td>
    <td bgcolor="#cccccc" align="center" width="200">相对质量</td>

</tr>
<?php
for ($distance = 1; $distance <= 10; $distance ++) {
    echo "<tr>
          <td align=\"center\">".$distance."</td>
          <td align=\"center\">".(2750-$distance*10 )."</td>
          </tr>\n";
}
?>
</table>

<strong>说明:</strong>
    假如55个鸡蛋,每个都是50克,总质量:55X50=2750
    但是因为小明从10个袋子中都拿了鸡蛋称。所以55个鸡蛋不可能每个都是50克。<br>
    所以就会出现以上10种情况。根据小明称55个鸡蛋的质量<br>
    就可以一次判断出来哪个编号袋子里的鸡蛋是轻的<br>
    *** 相对质量=2750-轻鸡蛋数量X(50-40)<br>
    *** 轻鸡蛋数量=袋数编号
</h4>
</div>

返回结果

  • 小明称鸡蛋的问题
    编号 相对质量

    1. 2740
    2. 2730
    3. 2720
    4. 2710
    5. 2700
    6. 2690
    7. 2680
    8. 2670
    9. 2660
    10. 2650
  • 说明: 假如55个鸡蛋,每个都是50克,总质量:55×50=2750
  • 但是因为小明从10个袋子中都拿了鸡蛋称。所以55个鸡蛋不可能每个都是50克。

  • 所以就会出现以上10种情况。根据小明称55个鸡蛋的质量,

  • 就可以一次判断出来哪个编号袋子里的鸡蛋是轻的

  • 相对质量=2750-轻鸡蛋数量x(50-40)

  • 轻鸡蛋数量=袋数编号


问题二:找轻球的问题

原题

有8个球,编号分别是1至8,其中有6个球一样重。另外两个球都轻1克。
为了找出这两个轻球,用天平称了三次,结果如下:
第一次: 1+2>3+4
第二次:5+6<7+8
第三次:1+3+5=2+4+8
判断:两个轻球分别是几号?

代码部分

<div class="container">
    <?php
$count = 8;
$normal = 1;
$light = 0;

$arr = array();
for($i=0;$i<$count;$i++) {
    for($j=$i+1;$j<$count;$j++) {
        $case = array_fill(1, $count, $normal);
        $case[$i] = $case[$j] = $light;
        $arr[] = $case;
    };
} ;

$res = array();
foreach($arr as $case) {
    $conditions = array(
        $case[1]+$case[2] > $case[3]+$case[4],
        $case[5]+$case[6] < $case[7]+$case[8],
        $case[1]+$case[3]+$case[5] === $case[2]+$case[4]+$case[8]
    );
    if($conditions[0]&&$conditions[1]&&$conditions[2]) {
        $res[] = $case;
    };
};
print_r($res);
?>
</div>

结果反馈

Array ( [0] => Array ( [1] => 1 [2] => 1 [3] => 1 [4] => 0 [5] => 0 [6] => 1 [7] => 1 [8] => 1 ) )
说明:Array [4] [5]  => 0 所以计算出结果是 4和5

发布者

rockts

喜欢技术,乐于开源! 乐可开源,想改变的也只有世界!

发表评论

电子邮件地址不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.