Page 154 - C:\Users\Admin\Desktop\Sach mem upweb\
P. 154

100 Problems & Solutions                                               Trang 154


                          s:=0;
                          a[0]:=i;
                          s:=s+i;
                          t[i]:=1;
                          try(1);
                        end;
                        close(f);
                      END.
                      (Lời giải của bạn Nguyễn Chí Thức - Lớp 11A1 khối PTCTT - ĐHSP Hà Nội)


                      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);



                      Tin học & Nhà trường                                       100 Đề Toán - Tin học
   149   150   151   152   153   154   155   156   157   158   159