Đề Chọn HSG Tin 11 – Thanh Chương – Nghệ An 1819

Đề Chọn HSG Tin 11 – Thanh Chương – Nghệ An 1819

Tổng quan bài thi

  Tên bài File chương trình File dữ liệu vào File kết quả Điểm Thời gian
Bài 1 MÃ HÓA mahoa.* mahoa.inp mahoa.out 6 0.5s
Bài 2 XÂU xau.* xau.inp xau.out 5 0.5s
Bài 3 XOAY SỐ xoayso.* xoayso.inp xoayso.out 5 0.5s
Bài 4 BCNN bscnn.* bscnn.inp bscnn.out 4 0.5s

Bài 1:   MÃ HÓA

          Các số từ 1 đến 9 được mã hoá dưới dạng các từ chỉ chứa các kí tự a, b và c như sau:

Chữ số 1 2 3 4 5 6 7 8 9
a b cc bbc cbc abc bac aac cac

Cho một xâu (có độ dài không quá 100) chỉ chứa các kí tự a, b, c.

Yêu cầu: Cho biết số nguyên tương ứng của xâu nếu mã hoá được, nếu không được ghi ra số 0

Dữ liệu: vào từ File MAHOA.INP là một xâu(có độ dài không quá 100)

Kết quả: Xuất ra File MAHOA.OUT  số nguyên tương ứng của xâu nếu mã hoá được, nếu không được ghi ra số 0

Ví dụ:          

MAHOA.INP MAHOA.OUT MAHOA.INP MAHOA.OUT
abacc 1213 accbc 0

Bài 2.    XÂU

Một xâu gồm các số chính phương được viết thành một hàng ngang vô tận 14916253649…Cho số N (1<= N<= 255), tìm xem vị trí thứ N trong xâu là số nào?

Read:   Word đề thi HSG Sinh học 9 - Năm học 2019 - 2020 các huyện ở Lâm Đồng

Dữ liệu vào: Từ File văn bản XAU.INP  gồm số nguyên N duy nhất

Dữ liệu ra: Ghi vào File văn bản XAU.OUT  một số nguyên duy nhất là số ở vị trí N trong xâu.

Ví dụ:

XAU.INP XAU.OUT
9 6

 

Bài 3   XOAY SỐ

            Cho một số X (số chữ số của X <=14). Ta gọi số đó là một số xoay khi  xoay số X một góc 180 thì ta vẫn được số X. Ví dụ: 11, 69, 96 là những số xoay.

Yêu cầu: Khi cho một số K, hãy tìm xem với những số có K chữ số thì có bao nhiêu số xoay và đó là những số nào?

Dữ liệu: vào từ File XOAYSO.INP chỉ ghi duy nhất một số nguyên dương K(1<=K<=14).

Kết quả: Xuất ra File XOAYSO.OUT  mỗi dòng ghi một số thoả mãn.

Ví dụ:

 

XOAYSO.INP XOAYSO.OUT
2 11

69

88

96

 Bài 4  BỘI SÔ CHUNG NHỎ NHẤT

Cho trước số tự nhiên N (1< N <100)

Xét tất cả các phân tích N thành tổng các số tự nhiên

N = a1 + a2 +… +ak (1)

Tìm giá trị lớn nhất của BSCNN (a1,a2,, …, ak) trên tập các bộ số (a1,a2,…, ak) thoả mãn đẳng thức (1).

Dữ liệu vào: từ file văn bản BSCNN.INP: là 1 số N

Kết quả: Ghi ra file văn bản BSCNN.OUT, bao gồm 2 dòng, dòng thứ nhất ghi giá trị số Max tìm được. Dòng thứ hai ghi n bộ số a1,a2,, …, ak tương ứng, các số cách nhau bằng dấu cách.

Ví dụ.

BSCNN.INP BSCNN.OUT
22 420

4 5 6 7

Code tham khảo Đề HSG Tin 11 – Thanh Trương – Nghệ An 1819

Bài 1:











































































Const   finp='MAHOA.INP';
        fout='MAHOA.OUT';
        st:array[1..9] 

of string=('a','b','cc','bbc','cbc','abc','bac','aac','cac');
Var     fi,fo:text;
        l,tr,kq:array[1..100] 





















of integer;
        tt,i,j,k,dem,n,x:integer;
        s,s1:string;
        ok:boolean;
Procedure Open_file;
begin
        Assign(fi,finp);
        reset(fi);
        Assign(fo,fout);
        Rewrite(fo);
end;
Procedure Close_file;
begin
        Close(fi);
        Close(fo);
end;
Procedure Enter;
begin
      readln(fi,s);
end;
Procedure Solve;
begin
    l[0] 





:=1;
   for j:=1 to length(s) do
   begin
    ok:=false;
    for i:=1 to 9 do
      begin
        tt:=length(st[i] 



);
         if j>=tt then
         begin
             s1:=copy(s,j-tt+1,tt);
             if st[i] 

=s1 then
            begin
               l[j] 
:=i;
               tr[j] 















:=j-tt;
               ok:=true;
               break;
            end;
         end;
      end;
   end;
end;
Procedure Print;
begin

      n:=length(s);
      x:=n;
      dem:=0;
      repeat
        inc(dem);
        kq[dem] :=l[x] 
;
        if kq[dem] 




=0 then
          begin
                write(fo,0);
                exit;
          end;
        x:=tr[x] 


;
        if x=0 then break;
      until false;
      for j:=dem downto 1 do write(fo,kq[j] 







);
end;
Begin
        Open_file;
        Enter;
        Solve;
        Print;
        Close_file;
End.

Bài 2:





















































































Const   Finp    ='xau.inp';
        Fout    ='xau.out';
        Limit   =300;
Var     fi,fo   :Text;
        St      :string;
        n       :Integer;
Procedure       Openfile;
Begin
     Assign(fi,finp); Reset(fi);
     Assign(fo,fout); Rewrite(fo);
End;

Procedure       CloseFile;
Begin
     Close(fi); Close(fo);
End;

procedure       Readinp;
Begin
     Readln(fi,n);
End;

Procedure       Init;
Var             i:Integer;
                s:string;
Begin
     St:=''; i:=1;
     Repeat
           str(i*i,s);
           st:=st+s;
           inc(i);
           if Length(st)>=255 then Break;
     until False;
ENd;

Procedure       Solve;
Var             i,j:Integer;
BEgin
     Writeln(fo,st[n] 








);
End;

Begin
     OpenFile;
     Readinp;
     Init;
     Solve;
     CloseFile;
End.

Bài 3:
















































































program         XOAYSO ;
const
     fi         =       'XOAYSO.INP' ;
     fo         =       'XOAYSO.OUT' ;
     n_g        :       array [ 1..5 ] 
 of byte = ( 0 , 1 , 6 , 8 , 9 ) ;
     nguoc      :       array [ 1..5 ] 
 of byte = ( 0 , 1 , 9 , 8 , 6 ) ;
     that       :       array [ 1..3 ] 

 of byte = ( 0 , 1 , 8 ) ;
var
   a            :       array [ 1..20 ] 

 of integer ;
   count , n    :       longint ;
   kt           :       array [ 0..9 , 1..20 ] 











 of boolean ;
   f            :       text ;
   
procedure     DOC;
   begin

        assign ( f , fi ) ;
        reset ( f ) ;
        readln ( f , n ) ;
        close ( f ) ;
        count := 0 ;
        fillchar ( kt , sizeof ( kt ) , true ) ;
        kt [ 0 , 1 ] 











 := false ;
   end ;

   procedure     XUAT ;
   var
      i , j     :       integer ;
      begin
           if odd ( n ) then
           begin
                for i := 1 to 3 do
                 begin
                      inc ( count ) ;
                      a [ n div 2 + 1 ]  := that [ i ] 

 ;
                      for j := 1 to n do
                       write ( f , a [ j ] 







 ) ;
                      writeln ( f ) ;
                 end ;
           end
           else
           begin
                inc ( count ) ;
                for j := 1 to n do
                 write ( f , a [ j ] 









 ) ;
                writeln ( f ) ;
           end ;
      end ;

   procedure         THU ( i : integer ) ;
   var
      j         :       integer ;
      begin
           for j := 1 to 5 do
            if kt [ n_g [ j ] 

 , i ] then
            begin
                 a [ i ]  := n_g [ j ] 
 ;
                 a [ n + 1 - i ]  := nguoc [ j ] 

















 ;
                 if i = n div 2 then xuat else THU ( i + 1 ) ;
            end ;
      end ;

   procedure            XULY ;
   begin
        assign ( f , fo ) ;
        rewrite ( f ) ;
        THU( 1 ) ;
        close ( f ) ;
   end ;

BEGIN
     DOC;
     XULY ;
END.

4

Bài 4:






















































































Program BCSNN;
uses crt;
const fi='BSCNN.INP';
      fo='BSCNN.OUT';
      maxn=100;
var   a: array[1..maxn,1..maxn] 
 of longint;
      b: array[1..maxn,1..maxn] 




























 of byte;
      n : integer;
      f: text;
procedure DOC;
begin
assign(f,fi);
reset(f);
readln(f,n);
close(f);
end;
function TIM(x,y: longint):longint;
var tg,i,j: longint;
begin
i:=x;
j:=y;
while i mod j <>0 do
      begin
           tg:=j;
           j := i mod j;
           i:=tg;
      end;
      TIM:=(x*y)div j;
end;
procedure XULY;
var i,j ,t: integer;
    tg: longint;
begin
for i:=1 to n do
    begin
         a[i,1] 
:=i;
         b[i,1] 




:=i;
    end;
    for j:=2 to n-1 do
        for i:=j+1 to n do
        begin
             a[i,j] 


:=0;
             for t:=1 to i-j+1 do
                 begin
                      tg:=TIM(a[i-t,j-1] 
,t);
                      if a[i,j] 

<tg then
                         begin
                              a[i,j] 
:=tg;
                              b[i,j] 












:=t;
                         end;
                 end;
        end;
end;

procedure GHI;
var i,j: integer;
begin
assign(f,fo);
rewrite(f);
j:=n;
for i:=1 to n-1 do
if a[n,n] < a[n,i] 

 then
begin
a[n,n] :=a[n,i] 


;
j:=i;
end;
writeln(f,a[n,n] 



);
i:=n;
while j>0 do
begin
write(f,b[i,j] 
,' ');
i:=i-b[i,j] 








;
j:=j-1;
end;
close(f);
end;
BEGIN
DOC;
XULY;
GHI;
END.

 

Read:   Lập trình giải mã xâu bằng Pascal
Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *