import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    public int findNthDigit (int n) {
        
        //10      180+10     2700+180+10
        //[0,10)  [10,100)   [100,1000)
        int bit = 1 ;//位数
        long low = 0 ;//下限
        long high = 10 ;//上限
        //找n在哪个区间(每个区间都有若干位数,当n高于区间的位数,就减去这些区间的位数
        //继续判断下一个区间
        while(n >= (high-low)*bit) {
            long count = (high-low)*bit;
            n-=count ;
            bit++ ;
            low=(low==0?10:low*10) ;
            high *= 10 ;

        }
        //在区间low~high的第num位数(从0开始)
        long num = n / bit + low ;
        //在第num位数的第一个位置
        int bbit = n % bit ;
        
        int div = (int)(Math.pow(10.0,bit-bbit-1)) ;
        return (int)(num/div)%10 ;

    }
}