说明
- 不要理解为多少个数包含7;
思路
- 以题目理解为 [0, 999] 有多少个7, 因为0和1000都不含有7;
- [1, 999] 或 [1, 9999] 的思路是一样的;
假如 n 是数字的位数, 则有 f(n) = f(n-1) * 9 + 10^(n-1)
:
f(n-1)*9
: 因为高位有[1, 9]共计9种数字搭配地位;
10^(n-1)
: 高位的7搭配地位的所有可能数字可能;
f(n) = f(n-1) * 9 + 10^(n-1) 且 f(0) = 0
f(1) = f(0)*9 + 10^(1-1) = 0*9 + 10^0 = 1
f(2) = f(1)*9 + 10^(2-1) = 1*9 + 10^1 = 19
f(3) = f(2)*9 + 10^(3-1) = 19*9 + 10^2 = 271
f(4) = f(3)*9 + 10^(4-1) = 271*9 + 10^3 = 3439
如果 7 和 07 算作两个有效数字
同样会有公式
f(n) = f(n-1) * 10 + 10^(n-1) 且 f(0) = 0
f(1) = f(0)*10 + 10^(1-1) = 0*10 + 10^0 = 1
f(2) = f(1)*10 + 10^(2-1) = 1*10 + 10^1 = 20
f(3) = f(2)*10 + 10^(3-1) = 20*10 + 10^2 = 300
f(4) = f(4)*10 + 10^(4-1) = 300*10 + 10^3 = 4000
这种场景的结果有很明显的规律: f(n) = n * 10^(n-1)
, 可以参加思路 https://www.jianshu.com/p/8e1844d80143