题目描述
数字以 0123456789101112131415... 的格式作为一个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2 ,第 10 位是 1 ,第 13 位是 1 ,以此类题,请你输出第 n 位对应的数字。
示例1
示例2
示例3
思路 & 解答
这道题是数学规律题,先找到规律,下面是几个区间
-
- 小于10,1~9,9个数字,9位
-
- 大于等于10小于100,10~99,90个数字,180位
-
- 大于等于100且小于1000,100~999,900个数字,2700位
- ......
当我们查找第 n 为位的时候,需要先计算出 n 落在哪一个区间内,比如 8 就在 第一个区间内,161 就在第二个区间内,1314 就在第 3 个区间内;
计算出区间之后,需要 计算出所在的数字是哪一个,比如 1314 (一共4位),然后再计算位数。
Java
代码实现如下:
C++
代码如下: