package main

import "strconv"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param n int整型
 * @return int整型
 */
func findNthDigit(n int) int {
	// write code here
	// 从下标 0 开始计算
	// 区间
	// 0 (0,10) [10,100) [100,1000)...
	// 1    9     99-9     999-99

	// 用于确定 n 是几位数
	digit := 1

	// 记录每个区间的起始数字
	// 1 10 100 ...
	start := 1

	// 记录当前区间共有几位数
	// 0  (0,10) [10,100) [100,1000)...
	// 1  9*1*1   9*10*2   9*100*3
	sum := 9
	for n > sum {
		n -= sum
		start *= 10
		digit++
		sum = 9 * start * digit
	}

	// 定位 n 在哪个数字上
	num := start + (n-1)/digit
	// 定位 n 在 num 的索引位置
	index := (n - 1) % digit

	numStr := strconv.Itoa(num)

	return int(numStr[index] - '0')
}