SỞ GD VÀ ĐT VĨNH PHÚC

TRƯỜNG THPT LIỄN SƠN

KỲ THI CHỌN HSG CẤP TRƯỜNG LỚP 11

Năm học: 2018-2019

 

MÔN: TIN HỌC

Thời gian 180 phút (Không kể thời gian giao đề)

Tổng quan bài thi

TT

Tên bài

Tên file CT

Tên file DL vào

Tên file DL ra

Điểm

Thời gian

1

Đếm đoạn

count.pas

count.inp

count.out

7

1s

2

Số lớn

nmax.pas

nmax.inp

nmax.out

7

1s

3

Chia quà tết

gift.pas

gift.inp

gift.out

6

1s

 

Bài 1: Đếm đoạn

Tên file: count.pas
 Dữ liệu vào: count.inp
 Dữ liệu ra: count.out

Cho mảng số nguyên. Một đoạn con của là một dãy các phần tử liên tiếp trong . Hãy đếm số đoạn con của có giá trị lớn nhất lớn hơn hoặc bằng .

Dữ liệu:

  • Dòng 1: Ghi 2 số nguyên , các số cách nhau 1 khoảng trống.
  • Dòng 2: Ghi số nguyên của dãy , các số cách nhau 1 khoảng trống.

Kết quả:

Gồm 1 dòng duy nhất ghi kết quả.

Ví dụ:

count.inp

count.out

5 1

1 1 1 1 1

15

count.inp

count.out

4 4

1 5 2 5

8

Giới hạn:

  • số test ứng với số điểm có
  • số test khác ứng với số điểm có
  • Có 40% số test còn lại ứng với số điểm có
  • Trong tất cả các test .

Bài 2. Số lớn

Tên file: nmax.pas
 Dữ liệu vào: nmax.inp
 Dữ liệu ra: nmax.out

1

 


Peter và Bin chơi trò chơi tìm số lớn, Peter cho Bin biết trước một xâu kí tự, trong đó có ít nhất 5 chữ số. Peter yêu cầu Bin tìm số lớn nhất từ xâu đã cho bằng cách hãy loại bỏ một số kí tự ra khỏi xâu sao cho 5 kí tự cuối cùng còn lại theo đúng thứ tự đó tạo thành số lớn nhất.

Dữ liệu: Dòng 1 gồm một xâu cho trước

Kết quả: Một dòng duy nhất chứa số nguyên là số lớn nhất mà Bin tìm được sau khi loại bỏ các kí tự.

Ví dụ:

nmax.inp

nmax.out

13a7b48cb7d9e68f7

89687

 

Bài 3: Chia quà tết

Tên file: gift.pas
 Dữ liệu vào: gift.inp
 Dữ liệu ra: gift.out

Trường THPT A chia quà tết cho học sinh, có X chiếc áo Y hộp bánh để chia quà cho học sinh diện chính sách cuối năm 2018. Nhà trường chia quà cho học sinh thoả mãn điều kiện: nếu chia cho n học sinh diện chính sách thì các học sinh phải nhận được số lượng chiếc áo như nhau, số lượng hộp bánh như nhau, đồng thời phải chia hết tất cả X chiếc áo và Y hộp bánh. Em hãy giúp nhà trường liệt kê tất cả các phương án chia quà thoả mãn điều kiện nêu trên.

Dữ liệu: Dòng 1: hai số nguyên X, Y (1<= X, Y <= 109)

Kết quả: Dòng 1.. m (m là số phương án chia quà): trên mỗi dòng ghi ba số nguyên n, a, b (mỗi số cách nhau một dấu cách) là một phương án chia quà có n học sinh được chia quà, mỗi học sinh nhận a chiếc áo và b hộp bánh. Các phương án được liệt kê ở các dòng liên tiếp theo thứ tự n tăng dần.

Ví dụ:

gift.inp

gift.out

9 12

1 9 12

3 3 4

6 18

1 6 18

2 3 9

3 2 6

6 1 3

 

 

-----------Hết -----------

1

 


Đáp án:

Bài 1: Đếm đoạn

uses math;

var q,d,z,n,i,s,m,k,j:longint;

      f, g:text;

    a, b:array[0..1000000]of qword;

begin

 assign(f,'nmax.inp');reset(f);

assign(g,'nmax.out');rewrite(g);

   readln(f,n,m);

 //  s:=0;

  // d:=0;

     for i:=1 to n do

      read(f,a[i]);

     q:=0;

     for i:=1 to n do

       begin

         if a[i]>=m then

           begin

             q:=i;

             b[i]:=b[i-1]+q;

           end

         else

            b[i]:=b[i-1]+q;

       end;

     writeln(g,b[n]);

 close(f);

 close(g);

End.

Bài 2: Tìm số lớn

var   f,g:text;

1

 


          s:ansistring;

Procedure Nhap;

Begin

     assign(f,'nmax.inp'); reset(f);

     assign(g,'nmax.out'); rewrite(g);

     read(f,S);

     close(f);

end;

Procedure xuly;

var i,j,k:byte;

begin

     i:=1;

     repeat

           if s[i] in ['0'..'9'] then inc(i) else delete(s,i,1);

     until i>length(s);

    for i:=1 to 5 do

     begin

          k:=i;

          for j:=i to length(s)+i-5 do

              if s[k]

              if k>i then delete(s,i,k-i);

     end;

     writeln(g,copy(s,1,5));

     close(g);

end;

Begin

     Nhap;      xuly;     readln;

End.

Bài 3: Chia quà tết

//gift.pas

var i,x,y:longint;

1

 


f,g: text;

function UCLN(x,y:longint):longint;

var sd:longint;

begin

        while y<>0 do

        begin

                sd:= x mod y;

                x:=y;

                y:=sd;

        end;

        UCLN:=x;

end;

begin

        assign(f,'gift.inp'); reset(f);

        assign(g,'gift.out'); rewrite(g);

        read(f,x,y);

        for i:=1 to UCLN(x,y) do

        begin

                if (x mod i=0) and (y mod i =0)  then

                writeln(g,i,' ',x div i,' ',y div i);

        end;

        close(f);

        close(g);

  readln

End.

1

 

nguon VI OLET