2001 - CHỮ SỐ THỨ N(DÀNH CHO HỌC SINH THCS VÀ THPT)THUẬT TOÁN

Bài 89/2001 - Chữ số thứ N

(Dành cho học sinh THCS và THPT)

Thuật toán: từ nhận xét rằng có 9 số có 1 chữ số, 90 số có 2 chữ số, ... Ta sẽ xác định xem chữ số thứ N

thuộc số có mấy chữ số và nó là số nào? Sau đó xem nó ở vị trí thứ mấy trong số đó.

Program bai89;

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}

{$M 16384,0,655360}

Uses crt;

Const fi ='number.inp';

fo ='number.out';

cs:array[1..8] of longint = (9, 180, 2700, 36000, 450000, 5400000, 63000000, 720000000);

Var n : longint;

f,g :text;

Function num(n:longint):char;

var k, so, mu : longint;

s : string;

Begin

k:=1; mu:=1;

while (k<9)and(cs[k]<n) do

begin

n:=n-cs[k];

inc(k); mu:=mu*10;

end;

if mu=1 then so:=n div k

else so:=n div k+mu+ord(n mod k>0)-1;

str(so,s);s:=s[k]+s;

num:=s[n mod k+1];

End;

BEGIN

assign(f,fi); reset(f);

assign(g,fo); rewrite(g);

while not seekeof(f) do

begin

readln(f,n);

writeln(g,num(n));

end;

close(f);

close(g);

END.