public:
//比较详细了
/*
1-9 9个*1
10-99 90个*2
100-999 900个*3
1000-9999 9000个*4
*/
int findNthDigit(int n) {
// write code here
if(n==0)return 0;
long long start=1;//起始数
long long digit=1;//记录位数
long long count=9;//记录区间个数,比如9 90 900
while(n>count){//先减去前面有规律的数
digit++;
n-=count;
start*=10;
count=digit*9*start;
}
//以下就是n剩余的数
//这里我们先判断剩余的n是在哪个数
long long number=start+(n-1)/digit;//start就是开始的第一个数字,所以后面要n-1
//判断好是在哪个数字后,下面对数字分解
long long temp=(n-1)%digit+1;//这个数的第几位
for(int i=digit;i>temp;i--){//把这个数后面多余的尾巴去掉
number/=10;
cout<<number<<" ";
}
return number%10;
}
};