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

100 Problems & Solutions                                               Trang 156


                                      j:=x mod M1;
                                      If i=4 then begin i:=3; j:=M1; end;
                                      Inc(A[i]^[j]);
                                      If A[i]^[j]>d then begin d:=A[i]^[j]; l:=x*k; end;
                                 end;
                           end;
                           Close(f);
                           For i:=0 to 3 do Dispose(A[i]);
                      End;
                      BEGIN
                        Clrscr;
                        d:=0; l:=0;
                       ReadF(-1);
                       ReadF(1);
                       Writeln('So lap nhieu nhat la: ',l,#10#13,'Voi so lan lap : ',d);
                        Readln;
                      END.
                      (Lời giải của Nguyễn Toàn Thắng *)
                      Bài giải của bạn Nguyễn Toàn Thắng dùng thuật toán lùa bò vào chuồng. Sau đây là
                      cách giải khác dùng thuật toán đếm số lần lặp.
                      Thuật toán: Tư tưởng thuật toán là dùng mảng đánh đấu có nghĩa là số x thì Lap[x] sẽ là
                                                                                                     6
                      số lần xuất hiện của số x trong mảng. Vì số phần tử của mảng nhỏ hơn hoặc bằng 10
                                                                                           6
                      nên phần tử của mảng Lap phải là kiểu dữ liệu để có thể lưu trữ được 10 . Số x là số
                      nguyên kiểu integer và do giới hạn bộ nhớ là 64K nên ta dùng ba mảng động như sau:
                      MG = array[-maxint..maxint] of byte;
                      L[1..3] of ^MG;
                      Xử lý trong hệ cơ số 100.
                      Chương trình.
                      {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
                      {$M 16384,0,655360}
                      program bai91;{Đỗ Đức Đông}
                      uses crt;

                      const       fi          ='input.txt';
                                  fo          ='output.txt';
                                  coso        =100;

                      type        mg    =array[-maxint..maxint]of byte;

                      var         L    :array[1..3]of ^mg;
                                  n,lap       :longint;
                                  kq          :integer;
                                  time        :longint;
                                  clock       :longint absolute $00:$0046c;

                      procedure tao_test;
                      var  f    :text;
                           k    :longint;
                       begin
                          n:=1000000;



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