求里程碑的题

题目:蒂莫西驾车从巴黎出发,在公路上匀速行驶.他经过一个里程碑(千米碑),是由三个数码组成的三位数,30分后她又经过一个里程碑,还是那个三个数码组成的新的三位数,又经过了50分钟经过第三个里程碑,竟然还是那三个数码组成的新的三位数,问:蒂莫西的车速?

思路:

首先明确已知的条件,

1.3个数组成的里程碑=>三位数小于1000

2.这3个里程碑都是整数

3.这3个里程碑都是由3个相同数字但是位置不同组合而成

4.这是匀速行驶的汽车=>知道了第一第二的里程碑就可以知道车速从而推出第三个里程碑

5.里程碑之间的时间分别是30分钟和50分钟

 

首先用第一个里程碑从1开始,利用穷举法,第二个里程碑利用穷举法递增,根据条件3可以快速判断是否满足条件,

当第二个里程碑确定了,就表示车速已经确定,从而第三个里程碑能推测出来,然后在利用条件3判断是否满足条件

 

public function speed()

{

// 返回比较的数组

$change_array = function ($number){

                      $tmp = $number + 1000;// 前面补充0

                      $tmp_num = substr($tmp, 1, 3); // 切去第一个1

                      $tmp_array = str_split($tmp_num);// 字符串变成数组

                      sort($tmp_array);// 排序

                      return $tmp_array;

};

 

// 第一个公里碑

for ($one = 1; $one < 1000; $one++) {

          $one_array = $change_array($one);

          // 第二个公里碑

          for ($two = $one + 1; $two < ((3000 + 5 * $one) / 8); $two++) {

                   $two_array = $change_array($two);

                   if ($one_array !== $two_array) continue;//不满足都是由同样的数字组成的公里数

 

                   $speed = ($two-$one) * 2; // 得到速度

                   $thr = (($speed / 60) * 50) + $two; // 计算出第三个公里碑的距离

                    $thr_array = $change_array($thr);

                    // 符合第一个要求

                   if ($two_array == $thr_array) {

                            echo '第一个里程碑是' . $one . ' ';

                            echo '第二个里程碑是' . $two . ' ';

                             echo '第三个里程碑是' . $thr . ' ';

                              echo '每小时' .$speed . '公里';

                            echo "\n\r";

                    } else {

                             continue;

                   }

          }

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值