Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Cho dãy số được tạo bởi các số tự nhiên liên tiếp: 

'123456789101112...'

Tìm số ở vị trí thứ N trong dãy số trên.

Ví dụ: 
N=5   => Kq: 5
N=10 => Kq: 1
N=54 => Kq: 3


var st: string;
   j,n,d,x: int64;
   i: integer;
begin
   write('Nhap n: ');readln(n);
   i:=1; j:=1; d:=9; x:=0;
   while (n > d) do
   begin
      n:=n-d;
      x:=x+d div i;
      j:=j*10;
      i:=i+1;
      d:=j*9*i;
   end;
   x:=x+(n div i);
   if n mod i>0 then
   begin
      x:=x+1;
      i:=n mod i;
   end;
   str(x,st);
   write('Ket qua: ',st[i]);
   readln
end.