已知 2^2021是首位为 2 的 609 位数,求 2^0、2^1、2^2、...、2^2021 中有多少个数是首位为 4 的。
已知 22021 是首位为 2 的 609 位数,求 20、21、...、22021 中有多少个数是首位为 4 的。
解:记20、21、...、22021 中首位为 a 的数有 F(a) 个,a 可以取 1 到 9 范围内的自然数。显然有 F(1) + F(2) + ... + F(9) = 2022
当 2n 是首位为 a 的 u 位数时,可记为 2n = a.x · 10u,x 表示 2n 的科学记数法的小数部分,如:
20 = 1.0 · 100,21 = 2.0 · 100,22 = 4.0 · 100,23 = 8.0 · 100
24 = 1.6 · 101,25 = 3.2 · 101,26 = 6.4 · 101
27 = 1.28 · 102,28 = 2.56 · 102,29 = 5.12 · 102
...
由上面的示例容易发现,一位数(1,2,4,8)中有一个首位为 1 的数;两位数(16,32,64)中有一个首位为 1 的数;三位数(128,256,512)中有一个首位为 1 的数...
这很容易理解,当 2n 的首位 a 大于等于 5 时,2n+1 的首位必然为 1(10 ≤ 2·a.x < 20),且 2n+1 的位数比 2n 的位数大 1。
已知 22021 是首位为 2 的 609 位数,由此可知,20、21、...、22021 中 609 位数只有 22020 和 22021,这两个数的首位分别为 1 和 2。
于是有 F(1) = 609,以及
F(5) + F(6) + F(7) + F(8) + F(9) = 609 - 1 = 608
当 1.x < 1.5 时,[1.x · 2] = 2;当 1.x ≥ 1.5 时,[1.x · 2] = 3,于是有
F(1) = F(2) + F(3)
因而 F(4) = 2022 - 609 · 2 - 608 = 196。
拓展题:已知 22021 是首位为 2 的 609 位数,求 50、51、...、52021 中有多少个数是首位为 4 的。
解:记50、51、...、52021 中首位为 b 的数有 G(b) 个,b 可以取 1 到 9 范围内的自然数。显然有 G(1) + G(2) + ... + G(9) = 2022
当 2n 是首位为 a 的 u 位数时,可记为 2n = a.x · 10u,x 表示 2n 的科学记数法的小数部分。同样地,当 5n 是首位为 b 的 v 位数时,可记为 5n = b.y · 10v,y 表示 5n 的科学记数法的小数部分。
由 2n·5n=10n可知, a.x · 10u · b.y · 10v=10n
当 n = 0 时,有 a = b = 1 和 u = v = 0;
当 n ≠ 0 时,有
a.x · b.y = 10 ①
u + v + 1= n ②
由 ① 易知:
当 a = 1 时,b = 5, 6, 7, 8, 9,反之亦然;
由对称性,又有:
当 b = 1 时,a = 5, 6, 7, 8, 9,反之亦然。
于是就有
G(5) +G(6) + G(7) + G(8) + G(9) = F(1) - 1 = 608
G(1) = F(5) + F(6) + F(7) + F(8) + F(9) + 1 = 609
再由 [b.x · 5] = 1可推知 b = 2, 3,但是打头的 50 没有对应这个关系的 b,于是有
G(2) + G(3) = G(1) - 1 = 608
因而 G(4) = 2022 - 609 - 608 - 608 = 197。