"""
012345678910...序列中,第n位数
"""
def solution(n):
if n < 0:
return -1
if n < 10:
return n
i = 2 # 确定是第几位数
sums = 10
ret = 0
while True:
# 一位数 0~9 共10个字符
# 两位数 10~99 共180个字符
# 三位数 100~999 共2700个字符
sums += ((10 ** i) - 10 ** (i - 1)) * i
if sums > n:
tmp = n - (sums - ((10 ** i) - 10 ** (i - 1)) * i)
numbers = (10 ** (i - 1)) + tmp // i # 得到第n位是第几个数字
flag = tmp % i # 确定第n位在当前数字中的位置
while i - flag - 1 > 0:
numbers //= 10
flag += 1
ret = numbers % 10
return ret
else:
i += 1
print(solution(1001))