SỞ GD&ĐT QUẢNG BÌNH
KÌ THI CHỌN HSG TỈNH NĂM HỌC 2015-2016
Khóa thi ngày 23 - 3 - 2016
ĐỀ CHÍNH THỨC
Môn: Tin học
LỚP 12 THPT
Họ và tên: ………………………….. Thời gian: 180 phút (không kể thời gian giao đề)
Số báo danh: ………..……………...
Đề thi gồm có 2 trang
ĐỀ RA
Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau:
Câu 1: (3.0 điểm) Đếm ký tự chữ số.
DEMKT.PAS
Cho một xâu ký tự St có độ dài tối đa 255 ký tự, các ký tự được lấy từ tập:
‘a’ .. ‘z’; ‘A’ .. ‘Z’; ‘0’ .. ‘9’ và ký tự dấu cách.
Yêu cầu: Đếm số lần xuất hiện của ký tự chữ số có trong xâu St.
Dữ liệu vào: Cho trong file văn bản DEMKT.INP, có cấu trúc như sau:
- Dòng 1: Ghi xâu ký tự St.
Dữ liệu ra: Ghi ra file văn bản DEMKT.OUT, theo cấu trúc như sau:
- Dòng 1: Ghi ra số lần xuất hiện của ký tự chữ số có trong xâu St.
Ví dụ:
DEMKT.INP
DEMKT.OUT
Ky thi HSG lop 12 thang 3 nam 2016
7
Bài 2: (3,5 điểm) Hoán vị
nhất một dấu cách. (Lưu ý : N chia hết cho 8; 8 ≤ N ≤ 400000; 1 ≤ M ≤ N).
- Dòng 2: Ghi M số nguyên dương a1, a2, …, am, là chỉ số của M ghế đã được khán giả
mua vé đặt chỗ. Các số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản NOUCAMP.OUT, theo cấu trúc như sau:
- Dòng 1: Ghi K số nguyên dương b1, b2, …, bk, là chỉ số của các ghế trên sân chưa
được mua vé đặt chỗ (K = N-M). Các số được ghi theo thứ tự tăng dần và cách nhau
ít nhất một dấu cách.
Ví dụ:
NOUCAMP.INP
16 10
2 3 6 7 8 9 10 12
NOUCAMP.OUT
1 4 5 11 13 14
15 16
==HẾT==
2
HƯỚNG DẪN VÀ ĐÁP ÁN CHẤM
ĐỀ THI CHỌN HSG LỚP 12 THPT –NĂM HỌC 2015-2016
Môn: Tin học
Khóa thi ngày 23 - 3 - 2015
I- Phương pháp:
- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả. Thực hiện chương trình của
học sinh và so sánh kết quả.
- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính toán kết quả của
assign(f,fo);
rewrite(f);
for i:=1 to length(xau) do
if xau[i] in ['0'..'9'] then
inc(dem);
write(F,dem);
close(f);
end;
BEGIN
DOC;
XULY;
END.
3
{$r+}
program chuongtrinhhoanvi;
{$B-}
uses crt;
const fi='hoanvi.inp';
fo='hoanvi.out';
MN = 10;
var
s: array[0..MN] of byte;
n:byte;
f,g:text;
function Next(m: integer): Boolean;
var
i, j,t: integer;
close(g);
end;
BEGIN
assign(f,fi); reset(F);
READ(f,n);
close(f);
hoanvi(n);
END.
}
{$r+}
const
fi='noucamp.in1';
fg='noucamp.out';
maxn=51000;
type mmc=array[1..maxn] of byte;
4
var a:mmc;
ti,n,m:longint;
procedure xl;
var
f:text;
i,x:longint;
by,bi:word;
begin
fillchar(a,sizeof(a),0);
5