Së Gd&§t
Qu¶ng b×nh
§Ò thi chÝnh thøc
Sè B¸o Danh: ................
kú thi CHäN häc sinh giái cÊp tØnh líp 12 thpt
n¨m häc 2010 - 2011
M«n thi: tin häc - Vßng II
(Khãa thi ngµy 26 th¸ng 10 n¨m 2010)
Thêi gian lµm bµi: 180 phót (kh«ng kÓ thêi gian giao ®Ò)
ĐỀ 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) Số thân thiện
STT.PAS
Người ta định nghĩa:
- Ước số thực sự của một số là những ước số của số đó và bé hơn số đó. Ví
dụ: số 9 có các ước số thực sự là 1 và 3.
- Hai số được gọi là hai số thân thiện nếu các ước số thực sự của số này là
ước số của số kia và ngược lại. Ví dụ: Số 9 có các ước số thực sự là 1, 3 và số 27
có các ước số thực sự là 1, 3, 9. Vậy số 9 và số 27 là hai số thân thiện.
Cho hai số nguyên dương M và N (1 ≤ M, N ≤ 32000; M ≠ N).
Yêu cầu: Kiểm tra hai số M và N có phải là hai số thân thiện hay không.
Dữ liệu vào: Cho trong file văn bản STT.INP có cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương M N, các số được ghi cách nhau một
dấu cách.
Dữ liệu ra: Ghi ra file văn bản STT.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số 1 nếu M và N là hai số thân thiện, ngược lại thì ghi số 0.
Ví dụ:
STT.INP STT.OUT
STT.INP STT.OUT
9 27
1
9 12
0
Câu 2: (3,5 điểm) Hoán vị nhị phân
HV.PAS
Một hoán vị nhị phân có độ dài N là một dãy gồm N số 0 hoặc 1 liên tiếp
nhau. Ví dụ: 01001110 là một hoán vị nhị phân có độ dài bằng 8.
Cho một số nguyên dương N (2 ≤ N ≤ 20).
Yêu cầu: Hãy liệt kê tất cả các hoán vị nhị phân có độ dài N.
Dữ liệu vào: Cho trong file văn bản HV.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N.
Dữ liệu ra: Ghi ra file văn bản HV.OUT theo cấu trúc như sau:
- Gồm nhiều dòng: Mỗi dòng ghi một hoán vị nhị phân có độ dài N.
Ví dụ:
HV.INP
HV.OUT
3
Câu 3: (3,5 điểm) Ma trận
000
001
010
011
100
101
110
111
MATRAN.PAS
1/2
Cho một ma trận X gồm M dòng và N cột, mỗi ô của ma trận có giá trị 0
hoặc 1. Một ma trận lấy i dòng và j cột (1 ≤ i ≤ M; 1 ≤ j ≤ N) từ ma trận X thì được
gọi là ma trận con của ma trận X. Với mỗi ma trận con của ma trận X: Ta gọi D1 là
số lượng ô trên đường biên của nó có giá trị 1, D0 là số lượng ô trên đường biên
của nó có giá trị 0, D là giá trị của ma trận con: D = D1 - D0.
Yêu cầu: Xác định W là giá trị lớn nhất của một ma trận con trong các ma trận con
của ma trận X và K là số lượng ma trận con của ma trận X có giá trị bằng W.
Dữ liệu vào: Cho trong file văn bản MATRAN.INP có cấu trúc như sau:
- Dòng 1: Ghi số 2 nguyên dương M N (1 ≤ M ≤ 150; 1 ≤ N ≤ 150).
- M dòng tiếp theo: Mỗi dòng ghi N số 0 hoặc 1 mô tả ma trận X, các số được ghi
cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra tệp văn bản MATRAN.OUT theo cấu trúc như sau:
- Dòng 1: Ghi hai số nguyên dương W và K, hai số được ghi cách nhau một dấu cách.
Ví dụ:
5
1
1
0
1
0
MATRAN.INP
6
0 0 1 0 0
1 1 1 0 0
1 0 0 0 1
1 0 0 0 1
0 0 0 1 0
MATRAN.OUT
4 4
Giải thích:
1
1
0
1
0
0
1
1
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
1
0
1
1
0
1
0
0
1
1
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
1
0
1
1
0
1
0
0
1
1
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
1
0
1
1
0
1
0
0
1
1
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
1
0
Giới hạn thời gian thực hiện chương trình không quá 4 giây đối với mọi
trường hợp của dữ liệu vào, có 40% số Test với M, N > 100.
==HẾT==
* Thí sinh không được sử dụng tài liệu.
* Giám thị không giải thích gì thêm.
2/2
... 0 0 0 1 Giới hạn thời gian thực chương trình không giây trường hợp liệu vào, có 40% số Test với M, N > 100 ==HẾT== * Thí sinh không sử dụng tài liệu * Giám thị không giải thích thêm 2/2 ... định W giá trị lớn ma trận ma trận ma trận X K số lượng ma trận ma trận X có giá trị W Dữ liệu vào: Cho file văn MATRAN.INP có cấu trúc sau: - Dòng 1: Ghi số nguyên dương M N (1 ≤ M ≤ 150; ≤