import java util Scanner public class Kth public static void main Stri

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Scanner;
public class Kth {
public static void main(String args[]) {
long [] raz=new long[18];
Scanner sc = new Scanner(System.in);
long n = sc.nextLong();int i;long chis,ost;
n++;
raz[0]=9;
for(i=1;i<18;i++) //массив можно убрать,сохраняя в 2 переменные raz[i] и raz[i-1] и циклически дойти до нужного разряда,далее по коду используются лишь 2 значения со всего массива - raz[i] и raz[i-1]
{
raz[i]=(long)(Math.pow(10,i+1)-Math.pow(10,i))*(i+1)+raz[i-1];
}
i=0;
while(n>raz[i])
{
i++;
}
if(n>9) {
chis = (long) Math.pow(10, i) + (n - raz[i - 1] - 1) / (i + 1);
ost = (long) (n - raz[i - 1] - 1) % (i + 1) + 1;
}
else {
chis = (long) Math.pow(10, i) + (n - 1) / (i + 1);
ost = (long) (n - 1) % (i + 1) + 1;
}
ost=(long)(chis/Math.pow(10,i+1-ost))%10;
System.out.print (ost);
}
}