JZ44 数字序列中某一位的数字
JZ44 数字序列中某一位的数字
描述
数字以 0123456789101112131415… 的格式作为一个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2 ,第 10 位是 1 ,第 13 位是 1 ,以此类题推,请你输出第 n 位对应的数字。
数据范围: $0≤n≤109 $
示例1
1 | 输入:0 |
示例2
1 | 输入:2 |
示例3
1 | 输入:10 |
示例4
1 | 输入:13 |
题解
这题是简单?
首先确定最后一次增加的数字是在几位数,即$digitLen$等于几,一位数时,n处于$0\sim9$内,二位数时,n处于$9+90*2 \to 10\sim 189$内,以此类推。并且确定处于这一段内的哪一个位置。
第二步是计算这个数字具体是几,$index = \frac{n-1}{digitLen}$,再加上这一部分的起始数字,即$10^{digitLen}$
最后寻找数字内的位置,$pos = (n-1)%digitLen$
代码
1 |
|