PapiruS, каких еще массивов и строк... тут они совершенно неуместны. так и быть без функций тебе переделал (а вообще сам хоть бы немного пробовал понять, что и как): var i,k:integer; i_dec_cnt,i_n_dec:integer; f_i,f_j,f_t,result:integer; begin readln(k); i:=1; i_dec_cnt:=1; //while (k>dec_cnt(i)) do while (k>i_dec_cnt) do begin // k:=k-dec_cnt(i); k:=k-i_dec_cnt; inc(i); // from function dec_cnt f_i:=1;f_t:=i; while (f_t>=10) do begin f_t:=f_t div 10; inc(f_i); end; i_dec_cnt:=f_i; // end function end; //result f_j:=i_dec_cnt+1-k; while (f_j>1) do begin i:=i div 10; dec(f_j); end; result:=i mod 10; //end result writeln('Result = ',result); end.