优美编程

1000里面有几个7

2019-11-16  本文已影响0人  小遁哥

导读

先求出包含7的数有哪些

这个问题用穷举是很好回答的

    let count = 0;
    for (let i = 0; i < 1000; i++) {
      if ((i + "").indexOf("1") !== -1) {
       
        count++;
      }
    }

271个

过程时这样的

当只有1个位置上有 7时

7在个位上时,个位有9种,十位有9种,一个81种

7 在十位、百位上时同上,一共243种

当只有2个位置上有 7时

个位、十位上有7时,百位有9种情况

个位、百位和十位、百位同上 一个27种

当三个位置上有7的时候

1种 所以一共243 + 27 + 1 => 271

每个7都算 个位置上有 7时要乘2 + 27 三个位置上有7的时候 +2 一共

300

image

1-9都适用上面的推导,然而0不行

当只有1个位置上有0时

0在个位,十位有9种,百位有9种,一个81种

0在十位,个位有9种、百位有9种 一共81种

0在百位 因为089 这样的数只能看作89,如果看成1089就大于1000了,但是1-9的数字不会,比如789

一共162

当只有2个位置上有 0时

个位、十位上有0时,百位有9种情况
个位、百位上有0时,十位有9种情况
十位、百位有0,009的数字只能看作9,如果看成1009大于1000了,但是1-9的数字不会,比如660

一共18

当三个位置上有0的时候

1种 所以一个162 + 18 + 1 => 181

每个0都算
个位、十位上有0时 +9
个位、百位上有0时 不加 列入90 只有一个0
三个位置上有0的时候 看作0

190

上一篇 下一篇

猜你喜欢

热点阅读