You are on page 1of 3

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH

GIA LAI LỚP 12 THPT, NĂM HỌC 2017 – 2018


Môn: TIN HỌC – Bảng B
ĐỀ DỰ BỊ Thời gian làm bài: 180 phút (không kể thời gian phát đề)
Ngày thi: 09/12/2017
(Đề thi gồm 03 trang, 04 bài)

Hãy lập trình giải các bài toán sau đây và đặt tên tệp chương trình lần lượt là BAI1.*, BAI2.*;
BAI3.*, BAI4.*
Bài 1: Khoảng cách xâu (4 điểm)
Với một xâu ký tự, ta có thể tiến hành các phép biến đổi sau:
1. Thay một ký tự bất kỳ bởi một ký tự khác, chẳng hạn: test thành text.
2. Xóa một ký tự bất kỳ, chẳng hạn: text thành ext hoặc text thành txt.
3. Thêm một ký tự bất kỳ vào một vị trí bất kỳ, chẳng hạn SP thành SP2.
Với hai xâu S1 và S2, ta nói khoảng cách từ xâu S1 đến xâu S2 bằng số lượng ít nhất các phép
biến đổi thuộc ba cách trên mà khi áp dụng liên tiếp vào S1, ta sẽ nhận được xâu S2.
Dữ liệu: vào từ file văn bản KCXAU.INP gồm 2 dòng: dòng 1 là xâu S1, dòng 2 là xâu S2
(các xâu S1, S2 có độ dài không quá 100 ký tự)
Kết quả: Ghi ra file văn bản KCXAU.OUT như sau:
 Dòng đầu tiên ghi số N là khoảng cách từ S1 đến S2;
 Các dòng tiếp theo, mỗi dòng ghi một phép biến đổi theo thứ tự để từ xâu S1, có
được xâu S2.
Ví dụ:
KCXAU.INP KCXAU.OUT
1A3BC 3
13Ab 1A3BC – Thay C/5/b => 1A3Bb
1A3Bb – Thay B/4/A => 1A3Ab
1A3Ab – Xoa A/2 => 13Ab
Bài 2. Sắp xếp phân số (4 điểm)
Xét tập F(N) tất cả các số hữu tỷ trong đoạn [0,1] với mẫu số không vượt quá N.
Ví dụ tập F(5): 0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
Hãy viết chương trình cho phép nhập số nguyên N nằm trong khoảng từ 1 đến 100 và xuất ra
theo thứ tự tăng dần các phân số trong tập F(N) cùng số lượng các phân số đó.
Dữ liệu: vào từ file văn bản PHANSO.INP gồm 1 dòng là số nguyên dương N, 1 ≤ N ≤ 100.
Kết quả: ghi ra file văn bản PHANSO.OUT gồm:
 Dòng thứ nhất là số phân số tìm được;
 Dòng thứ hai là các phân số tìm được, mỗi phân số cách nhau ít nhất một khoảng trắng.
Ví dụ:
PHANSO.INP PHANSO.OUT
5 11
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1

Trang 1/3
Bài 3. Bài toán chúc Tết (6 điểm)
Một người quyết định dành một ngày Tết để đến chúc Tết các bạn của mình. Để chắc
chắn, hôm trước anh ta đã điện thoại đến từng người để hỏi khoảng thời gian mà người đó có
thể tiếp mình. Giả sử có N người được hỏi (đánh số từ 1 đến N), người thứ i cho biết thời gian
có thể tiếp trong ngày là từ Ai đến Bi (i = 1, 2, ..., N). Giả thiết rằng, khoảng thời gian cần thiết
cho mỗi cuộc gặp là H và khoảng thời gian chuẩn bị từ một cuộc gặp đến một cuộc gặp kế tiếp
là T. Bạn hãy xây dựng giúp một lịch chúc Tết để anh ta có thể chúc Tết được nhiều người
nhất.
Dữ liệu: vào trong file CHUCTET.INP gồm:
 Dòng đầu ghi số N (N ≤ 30)
 Dòng thứ i trong số N dòng tiếp theo ghi khoảng thời gian có thể tiếp khách của
người i gồm 2 số thực Ai và Bi (cách nhau ít nhất một dấu trắng). Dòng tiếp theo
ghi giá trị H (số thực) và dòng cuối cùng ghi giá trị T (số thực). Giả thiết rằng
các giá trị thời gian đều được viết dưới dạng thập phân theo đơn vị giờ, tính đến
1 số lẻ (thí dụ 10.5 có nghĩa là mười giờ rưỡi) và đều nằm trong khoảng từ 8 đến
21 (từ 8 giờ sáng đến 9 giờ tối).
Kết quả: ghi ra file CHUCTET.OUT gồm dòng đầu ghi K là số người được thăm, K dòng tiếp
theo ghi trình tự đi thăm, mỗi dòng gồm 2 số (ghi cách nhau ít nhất một dấu trắng): số đầu là
số hiệu người được thăm, số tiếp theo là thời điểm gặp tương ứng.

Ví dụ:
CHUCTET.INP CHUCTET.OUT
16
20
17 9.0
10.5 12.6
1 10.5
15.5 16.6
18 11.1
14.0 14.1
19 11.7
17.5 21.0
8 12.3
15.0 16.1
10 12.9
10.5 10.6
11 13.5
19.0 21.0
13 14.1
10.5 13.6
5 15.0
12.5 12.6
2 15.6
11.5 13.6
12 16.2
12.5 15.6
14 16.8
16.0 18.1
4 17.5
13.5 14.6
7 19.0
12.5 17.6
16 19.6
13.0 13.1
20 20.2
18.5 21.0
9.0 13.1
10.5 11.6
10.5 12.6
18.0 21.0
0.5 0.1

Bài 4. Biến đổi 0 - 1 (6 điểm)


Trang 2/3
Cho 2 lưới ô vuông A và B cùng kích thước M×N, mỗi ô có chỉ nhận các giá trị 0 hoặc 1
(A ≠ B). Các ô lưới được đánh số từ trên xuống dưới, từ trái qua phải bắt đầu từ 1. Cho phép
thực hiện phép biến đổi sau đây với lưới A: Chọn ô (i, j) và đảo giá trị của ô đó và các ô chung
cạnh với nó theo nguyên tắt 0 thành 1, 1 thành 0.
Hãy xác định xem bằng cách áp dụng dãy biến đổi trên có thể đưa A về B được hay
không? Nếu có hãy chỉ ra cách sử dụng một số ít nhất phép biến đổi.
Dữ liệu: vào từ file văn bản BIENDOI.INP
 Dòng đầu tiên ghi hai số M, N là kích thước ô lưới (M, N <= 100);
 M dòng tiếp theo, mỗi dòng một xâu N kí tự 0, 1 ứng với dòng tương ứng của A;
 Tiếp theo là một dòng trống;
 M dòng cuối mỗi dòng 1 xâu N kí tự 0, 1 ứng với dòng tương ứng của B.
Kết quả: Ghi ra file văn bản BIENDOI.OUT
 Dòng đầu số nguyên k là số lượng phép biến đổi ít nhất cần áp dụng (k = 0 nếu không
biến đổi được)
 Dòng thứ i trong số k dòng tiếp theo ghi hai số nguyên xác định ô cần chọn để thực
hiện phép biến đổi.
Ví dụ:
BIENDOI.INP BIENDOI.OUT
4 5 2
1 0 0 0 0 2 1
1 0 0 0 0
0 1 0 0 0
0 1 0 0 0

0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0

----------------Hết----------------
 Thí sinh không được sử dụng tài liệu.
 Cán bộ coi thi không giải thích gì thêm.

Trang 3/3

You might also like