递增计算
用count计算当前按数位计算有多少个数,num计算10进制数,当num每次跃升muti*10的倍数,位数大小p增加,muti更新,直到计算到要求的答案附近。
class Solution(object):
def digitAtIndex(self, n):
"""
:type n: int
:rtype: int
"""
count, num, p, muti = 0, 0, 1, 1
while count + p * 10 < n:
count += p * 10
num += 10
if num >= muti * 10:
p += 1
muti = num
# num多加了一个数,所以size为0,计算是在第一个数上,也就是num本身
# size不为0,num + size也正要取数位的数上
size, pos = (n - count) // p, (n - count) % p
num += size
return int(str(num)[pos])