导读
先求出包含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
image1-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
网友评论