将自然数从1开始依次写下去,得到如下一列数:12345678910111213……,以一个数字占一个位置,则第2009个

1个回答

  • 1位的数共9个:1,2,3,4,5,6,7,8,9

    2位的数共90个:10,11,12,...,98,99

    3位的数共900个:100,101,...,998,999

    4位的数共9000个:1000,1001,...,9998,9999

    ……

    其实不难证明,n位的数共有9*10^(n-1)个

    由于1位的数只有一个数字长度,所以9个1位数写在一起长度为1*9:

    123456789

    2位的数每个有2个数字长度,所以90个2位数写在一起长度为2*90=180:

    10111213.979899

    加上前面的所有1位数,得到1~99写在一起的总长度就是

    1*9+2*90=9+180=189:

    123456789101112...9899

    同理,3位的数每个有3个数字长度,所以900个3位数写在一起的长度就是3*900=2700:

    100101102...998999

    加上前面1位和2位的数,得到1~999写在一起的总长度就是

    1*9+2*90+3*900=2889

    由于1位和2位的总长度为189,小于2009,因此第2009个位置肯定不在1~99所组成的串上.但包含3位数以后,总长度变为2889,大于2009了,所以第2009个位置上的数肯定在某个3位数的位置上.

    (比方说,你要求第13个位置上的数,但是1位数连起来的长度只有9,小于13,而加上2位数以后,长度变为189,大于等于13了.所以第13个位置的数肯定在某个2位数上,实际上数一下就发现这个2位数是11,第13个位置的数落在它的个位1上.)

    求2009的思路也是这样,既然1位和2位的数拼起来一共有189个数字,那么从第一个三位数(100)的第一个数字(1)开始,对应的就是整个串的第190号位置,那么,整个串的第2009号位置,对应的就是3位数的第

    2009-190+1=1820

    号位置.

    由于3位数每个占3个位置,第1个占1~3,第2个占4~6,……,反过来就是,1~3号位置对应第一个三位数,4~6号位置对应第2个三位数.不难推出他们之间的公式:

    x号位置对应于第y个三位数:y = [x/3]

    (这里[]表示向上取整,即[t]是取不小于t的最小整数,例如[1]=1,[1.1]=2,[1.5]=2,[1.9]=2,[2]=2,[2.01]=3 等等.)

    那么第1820个位置对应的就是第 [1820/3] = 607 个三位数.第一个三位数是100,第二个三位数是101,...,所以第607个三位数就是 607+100-1=706,也就是说,整个串的第2009个位置落在3位数706上.

    那么,706有三个数字,7、0、6,究竟是落在哪个上面呢?

    前面说到,对于全部由3位数写成的串,第1个3位数占1~3号位置,第2个占4~6号位置,……,反过来说:

    1号位置对应第1个3位数的第1个数字

    2号位置对应第1个3位数的第2个数字

    3号位置对应第1个3位数的第3个数字

    4号位置对应第2个3位数的第1个数字

    5号位置对应第2个3位数的第2个数字

    ……

    不难推出:

    设位置为x,则

    若 x % 3 = 1,则 x 对应第1个数字

    若 x % 3 = 2,则 x 对应第2个数字

    若 x % 3 = 0,则 x 对应第3个数字

    (x % 3 表示 x 除以 3 的余数,比如 1 % 3 = 1, 2 % 3 = 2, 3 % 3 = 0, 4 % 3 = 1, 5 % 3 = 2, 6 % 3 = 0,等等)

    由于1820 % 3 = 2,因此第1820号位置对应的就是相应3位数的第2个数字.这个3位数是706,因此对应的数字就是0.

    于是就得到了答案0.