已知 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。

posted on 2021-06-24 11:23  readalps  阅读(478)  评论(0编辑  收藏  举报

导航