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
1
2
3
Đếm đoạn
Số lớn
Chia quà tết
count.pas
nmax.pas
gift.pas
count.inp
nmax.inp
gift.inp
count.out
nmax.out
gift.out
Điể
m
7
7
6
Thời gian
1s
1s
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 A có N số nguyên. Một đoạn con của A là một dãy các phần tử liên tiếp
trong A . Hãy đếm số đoạn con của A có giá trị lớn nhất lớn hơn hoặc bằng M .
Dữ liệu:
Dòng 1: Ghi 2 số nguyên N , M , các số cách nhau 1 khoảng trống.
Dòng 2: Ghi N số nguyên của dãy A , 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
51
11111
count.out
15
count.inp
44
1525
count.out
8
Giới hạn:
Có 30 % số test ứng với 30 % số điểm có 1≤ N ≤100.
Có 30 % số test khác ứng với 30 % số điểm có 1≤ N ≤5000.
Có 40% số test cịn lại ứng với 40 % số điểm có 1≤ N ≤105 .
Trong tất cả các test có 0 ≤ A i ≤ 106 .
Bài 2. Số lớn
Tên file: nmax.pas
Dữ liệu vào: nmax.inp
Dữ liệu ra: nmax.out
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 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
13a7b48cb7d9e68f7
nmax.out
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 và 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
9 12
6 18
gift.out
1 9 12
334
1 6 18
239
326
613
-----------Hết -----------
Đá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;
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;
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.