有一个字符数组为0123一直往后排,求第n位的数字
暴力解就是循环所有的数字,每循环一个就把它的位数累加,等什么时候超过了n,就说明第n位一定在这个数字中,再具体找到哪一位。
找规律
如果用f(m)表示从开始到位数为m的最大数字的位数之和
则f(0)=0
f(1)=101
f(2)=f(1)+902
f(3)=9003+f(2)
f(4)=90004+f(3)
f(m)=9*10^(m-1)*m+f(m-1)
所以找到n在哪个区间之后,就可以根据m得到几位数,然后用n-f(m)得到有几个个位数,再用这个除以m得到是第几个数,对m取余得到第几位,然后即可得到这一位是什么。