Đề thi chọn đội tuyển dự thi chung khảo quốc gia 2002
Bài 1: Một vùng lãnh thổ có dạng một lưới ô vuông gồm n x n ô (4 < n < 11). Với mục
đích phủ sóng truyền hình toàn bộ vùng lãnh thổ này người ta lập một dự án xây dựng
một hệ thống gồm k trạm tiếp sóng ở k ô của lưới. Một trạm tiếp sóng đặt tại một ô nào
đó của lưới không những đảm bảo phủ sóng cho ô này, mà còn phủ sóng cho tất cả các ô
chung cạnh với nó.
Dữ liệu về dự án cho trong một file TEXT có tên là INP.DAT, trong đó dòng đầu tiên ghi
số n. Trong k dòng tiếp theo mỗi dòng ghi 2 số nguyên dương x
i
, y
i
là toạ độ trên lưới của
một trạm tiếp sóng của dự án (hai số cách nhau bởi dấu cách)
Hãy lập trình nhập dữ liệu vào từ file sau đó:
a) Hiển thị lên màn hình lưới ô vuông có đánh dấu vị trí của các trạm tiếp sóng trên lưới.
b) Đưa ra màn hình thông báo là dự án đã cho có phủ sóng cho toàn lãnh thổ hay
không?. Trong trường hợp câu trả lời là phủ định cần chỉ rõ là toạ độ của các ô chưa
được phủ sóng. Ngược lại làm tiếp.
c) Tìm cách loại bỏ khỏi dự án một số nhiều nhất các trạm tiếp sóng mà vẫn đảm bảo
phủ sóng toàn bộ lãnh thổ. Hiển thị lên màn hình lưới ô vuông cùng với vị trí của các
trạm tiếp sóng của dự án cần xây dựng.
Bài 2: Cho dãy số nguyên x
i
, i=1,2, ,n. ( 1 < n < 9000)
Đoạn đơn điệu (j ,k) của dãy số trên là cặp chỉ số j và k sao cho một trong hai điều kiện
sau đây được thoả mãn:
i) x
j
< x
j+1
< < x
k
ii) x
j
>x
j+1
> >x
k
Cho hai dãy số nguyên (a
i
,b
i
), liệt kê theo từng cặp tương ứng các phần tử a
i
của dãy thứ
nhất và b
i
của dãy thứ hai.
Yêu cầu: Hiện trên màn hình đoạn đơn điệu (j,k) chung dài nhất cho cả hai dãy.
Dữ liệu vào được ghi trong file văn bản có tên là BAI2.DAT dưới dạng a
1
b
1
, a
2
b
2
trên
một hoặc nhiều dòng, mỗi phần tử trên cùng một dòng cách nhau ít nhất là một ký tự
trống.
Ví dụ:
Với dữ liệu vào như trên kết quả trên màn hình sẽ là (4,9) vì a
4
= 1, , a
9
= 17; b
4
= 8
b
9
= -6.
Yêu cầu kỹ thuật: Bài làm lần lượt đặt tên file là BAI1.PAS và BAI2.PAS.
Sở GD&ĐT Thái Nguyên
OLYMPIC Tin học Sinh Viên lần thứ XII, 2003 - Khối đồng đội không chuyên
Hãy lập trình giải các bài toán sau:
Bài 1. Giấy dán tường
Tên file chương trình DANGIAY.*
Có một bức tường cao M mét, dài N mét được chia thành MxN ô vuông kích thước 1x1
mét. Bức tường được dán giấy nhưng qua nhiều năm sử dụng một số ô bị ngấm nước và
hỏng. Người ta quyết định bỏ đi những ô bị hỏng và dán lại.
Người ta mua về một cuộn giấy cùng loại có bản rộng 1 mét và độ dài được xem là không
hạn chế. Do chiều hoa văn của giấy dán nên chỉ có thể dán theo chiều đứng. Để đỡ mất
công, nếu có một vùng K ô liên tiếp theo chiều thẳng đứng cùng phải thay thế thì người
ta sẽ cắt một băng giấy dài K mét và dán một lần.
Không được dán lên những ô không hỏng.
Yêu cầu:
Hãy lập chương trình tính số lần cắt (mỗi lần cắt lấy ra được một mảnh) để dán được hết
chỗ hỏng trên tường.
Dữ liệu:
Dữ liệu nhập vào từ file văn bản DANGIAY.INP có cấu trúc như sau:
* Dòng đầu gồm 2 số tự nhiên M, N cách nhau một dấu cách tương ứng là chiều cao và
chiều dài của bức tường (5 ≤ M ≤ 50, 1 ≤ N ≤ 100).
* Tiếp theo là M dòng, dòng thứ I trong M dòng đó thể hiện tình trạng của hàng ô thứ I
tính từ trên xuống. Bít thứ J là 1 nếu ô thứ J trong hàng đó không bị hỏng và bằng 0 nếu
ô đó bị hỏng.
Kết quả:
Kết quả ghi ra file văn bản DANGIAY.OUTvới một số duy nhất là số lần cắt.
Ví dụ:
Bài 2. Bản đồ
Tên file chương trình: BANDO.*
Trong một bản đồ quân sự hình chữ nhật chụp từ vệ tinh, những vị trí quan trọng được
đánh dấu bằng các hình chữ thập có các nét vẽ song song với cạnh của bản đồ. Để
truyền người ta mã hóa các hình chữ thập trên một bảng 2 chiều các bít thể hiện lưới
điểm. Chỗ nào là hình chữ thập sẽ mã hóa bằng số 1, những chỗ khác bằng số 0. Độ dày
các nét vẽ của chữ thập là 1 điểm, 4 nét vẽ của hình chữ thập kể từ tâm tỏa ra 4 phía
đều có độ dài ít nhất hai điểm không kể chính tâm điểm.
Khoảng cách giữa hai điểm A và B có chỉ số hàng, cột là (i
A
, j
A
) và (i
B
, j
B
) được tính bằng
max ( |i
A
−i
B
|, |j
A
− j
B
|).
ảnh được mã hóa đủ tinh tế, đạt độ phân biệt cấp 2 theo nghĩa không có hai điểm nào
của hai hình chữ thập khác nhau có khoảng cách nhỏ hơn 2.
Do nhiễu khi truyền, ảnh nhận được có thể bị hỏng một số điểm, bít 0 biến thành 1 và
ngược lại. Một hệ truyền ảnh được gọi là có độ chính xác cấp k nếu hai điểm hỏng bất kỳ
có khoảng cách không bé hơn k. Ví dụ sau đây mình họa mã hóa với độ phân biệt 2 và
truyền thông có độ chính xác cấp 3.
OLYMPIC Tin học Sinh Viên lần thứ XII, 2003 - Khối chuyên tin
Hãy lập trình giải các bài sau đây:
Bài 1. Tam giác Trên mặt phẳng cho N điểm có toạ độ nguyên A
i
(x
i
,y
i
), i=1,2,…,N. Mỗi
một trong số N điểm được tô bởi một trong số K
mầu. Các mầu được đánh số từ 1 đến K. Một
tam giác với ba đỉnh là ba điểm có cùng màu
trong số N điểm đã cho được gọi là tam giác
cùng màu.
Yêu cầu: Tìm số lượng tam giác cân cùng màu.
Dữ liệu : Vào từ file văn bản TAMGIAC.INP:
- Dòng đầu tiên chứa hai số nguyên N và K được
ghi cách nhau bởi dấu cách; (1
- Dòng thứ i trong số N dòng tiếp theo chứa 3 số x
i
y
i
,c
i
được ghi cách nhau bởi dấu cách,
trong đó (x
i
,y
i
) là tọa độ của điểm A
i
còn c
i
là màu của A
i
(các số x
i
, y
i
có trị tuyệt đối
không quá 32000).
Kết quả: Ghi ra file văn bản TAMGIAC.OUT số lượng tam giác cân cùng màu.
Ví dụ:
Bài 2. Hình xoắn ốc
Bằng cách viết liên tiếp các số tự nhiên từ 1 đến N
ta nhận được một dãy các chữ số. Ví dụ với N=18
ta có dãy các chữ số:
123456789101112131415161718. Sau đó điền dãy
chữ số này vào các điểm nguyên của mặt phẳng
toạ độ theo chiều xoắn ốc bắt đầu từ điểm (0,0)
như sơ đồ sau:
Như vậy với một số N cho trước một số điểm nguyên của mặt phẳng toạ độ có chứa một
chữ số.
Yêu cầu: Cho hai số nguyên x và y, hãy:
a) Tìm số tự nhiên N lớn nhất sao cho điểm (x,y) chưa có chữ số.
b) Giả sử điểm (x,y) đã có chữ số. Hãy tìm chữ số K được điền tại điểm (x,y).
Dữ liệu: Vào từ file văn bản SPIRAL.INP gồm một dòng chứa 3 số nguyên q, x và y,
trong đó q=1 nếu là yêu cầu a) và q=2 nếu là yêu cầu b), còn x và y có giá trị tuyệt đối
không vượt quá 20000.
Kết quả: Ghi ra file văn bản SPIRAL.OUT:
Nếu q=1 hãy ghi ra số N (kết quả của câu a), còn q=2 hãy ghi ra chữ số K (kết quả của
câu b).
Ví dụ1:
Bài 3. Ba thành phố
Trong một đất nước có N thành phố được đánh số từ 1 đến N. Có một số thành phố được
nối với nhau bởi hệ thống các con đường cao tốc, mỗi con đường nối hai thành phố nào
đó. Hệ thống đường cao tốc này có tính chất sau: Đối với hai thành phố bất kỳ A và B,
nếu có cách di chuyển từ thành phố A đến thành phố B theo các con đường của hệ thống
thì có đúng một cách di chuyển mà trong đó không có con đường nào bị qua quá một
lần.
Tồng thống của đất nước này đặt ra câu hỏi sau đây với các nhà Tin học: Ba thành phố
nào đó là cách xa nhau nhất. Chính xác hơn ta gọi độ giãn cách giữa ba thành phố A,B,C
là tổng số con đường cần sử dụng để di chuyển từ A đến B, tiếp đến di chuyển từ B đến
C và cuối cùng di chuyển từ C đến A tuân thủ điều kiện: trong mỗi di chuyển vừa nêu,
mỗi con đường chỉ được đi qua không quá một lần.
Yêu cầu: Tìm ba thành phố mà độ giãn cách giữa chúng là lớn nhất.
Ví dụ: Đối với 5 thành phố với các con đường nối chúng được cho trong hình 1, ba thành
phố với độ giãn cách lớn nhất là 1, 2 và 5 (độ giãn cách là 2+3+3=8). Đối với 5 thành
phố với các con đường nối chúng được cho trong hình 2, ba thành phố với độ giãn cách
lớn nhất là ba thành phố bất kỳ trong 4 thành phố {1, 2 ,4, 5} (độ giãn cách là
2+2+2=6).
Dữ liệu : Vào từ file văn bản COUNTRY.INP:
- Dòng đầu tiên chứa số nguyên N (3 ≤ N ≤ 1000).
- Tiếp theo là N dòng mô tả thông tin về các thành phố. Dòng thứ i chứa các số: K
i
là số
lượng thành phố có con đường nối với thành phố i (1 ≤ K
ii
số nguyên là các chỉ số của các
thành phố này.
- Dữ liệu đảm bảo là có con đường nối A với B thì cũng có con đường nối B với A, đồng
thời đối với mọi cặp thành phố đều thực hiện điều kiện đã nêu.
Kết quả: Ghi ra file văn bản COUNTRY.OUT một số nguyên là độ giãn cách giữa ba
thành phố tìm được.
Ví dụ:
Đề thi chọn Học sinh giỏi Quốc gia Lớp 12 2001 - 2002
Ngày thi 12/03/2002 - Bảng A
Bài 1. Ký tự đại diện
Trong nhiều hệ điều hành người ta thường dùng ký tự đại diện * để thay thế cho một xâu
ký tự bất kỳ (kể cả sâu rỗng) trong tên file. Ví dụ: *.PAS nghĩa là tên file bất kỳ có đuôi là
PAS, A*B*C được hiểu là xâu ký tự bất kỳ bắt đầu bằng chữ A, kết thúc bằng chữ C và có
chứa chữ B.
Một từ là một xâu ký tự không chứa dấu cách. Cho A và B là hai từ, ta nói A là đặc biệt
hoá của B nếu A có thể nhận được từ B bằng cách thay mỗi ký tự * (nếu có) bằng một
xâu ký tự thích hợp kể cả xâu rỗng hoặc xâu có chứa chính ký tự *. Khi đó ta cũng nói B
là tổng quát hoá của A.
Hai từ nếu đã thừa nhận một từ là đặc biệt hoá chung thì cũng thừa nhận một từ đặc biệt
hoá không chứa ký tự *. Hai từ bất kỳ bao giờ cũng thừa nhận một tổng quát hoá chung
tầm thường là từ chỉ gồm 1 ký tự *. Một tổng quát hoá chung không tầm thường là một
tổng quát hoá chứa ít nhất một ký tự khác với *. Ví dụ:
1. Từ AFX*18* và từ A*F*B cùng thừa nhận một đặc biệt hoá chung AFX18B. Hai từ này
có tổng quát hoá chung không tầm thường, ví dụ: A*
2. Hai từ G3*R*P và từ G*1 sẽ không có đặc biệt hoá chung mặc dù có tổng quát hoá
chung không tầm thường, ví dụ: G*
3. Hai từ A*B và B*A không có cả đặc biệt hoá chung cũng như không có tổng quát hoá
chung không tầm thường.
Yêu cầu:
Cho N cặp từ bất kỳ, với mỗi cặp từ đó hãy xác định một đặc biệt hoá chung không chứa
ký tự * nào và một tổng quát hoá chung không tầm thường nếu có.
Dữ liệu vào: trong file văn bản có tên là GROUP.INP có cấu trúc như sau:
- Dòng đầu tiên là một số N cho biết số lượng cặp từ phải xử lý.
- Dòng thứ i trong N dòng tiếp theo sau chứa cặp từ phải xét thứ i, hai cặp từ này phân
cách nhau bởi một dấu cách.
Kết quả: Kết quả ghi ra file văn bản có tên là GROUP.OUT có N dòng.
- Dòng thứ i sẽ chứa kết quả tương ứng với cặp thứ i. Mỗi dòng này cũng gồm hai từ
cách nhau bởi một dấu cách. Từ thứ nhất là một đặc biệt hoá chung không chứa ký tự *
nếu có. Trong trường hợp không có thì ghi ký tự *. Từ thứ hai là một tổng quát hoá
chung không tầm thường nếu có. Trong trường hợp không có tổng quát hoá chng thì
cũng ghi ký tự *.
Ví dụ:
GROUP.INP
3
AFX*18*A*F*B
G3*R*P G*1
A*B B*A
GROUP.OUT
AFX!*B AF*
*G*
* *
Bài 2. Đào tạo từ xa
Phương pháp đào tạo từ xa đang được nghiên cứu và triển khai rộng rãi. Mỗi học viên có
chứng chỉ của một số môn cơ bản thì sẽ được cấp bằng chứng nhận trình độ. ưu điểm
của phương pháp đào tạo từ xa là gắn được quá trình đào tạo với nhu cầu và điều kiện
học tập của từng học viên cụ thể. Có 26 môn học được ký hiệu bằng chữ cái Latinh in hoa
từ A đến Z.
Có một số môn chung phần kiến thức. Vì vậy, để nhận được chứng chỉ của môn nào đó,
học viên có thể học một số môn khác thay thế. Nguyên tắc thay thế như sau: một môn
nào có tên tương ứng với phím X có thể thay bằng:
- Hai môn có tên ghi trên 2 phím kề với phím X ở phía trên, hoặc
- Hai môn có tên ghi trên 2 phím kề với phím X ở phía dưới, hoặc
- Hai môn có tên ghi trên 2 phím kề với phím X, một ở phí trên, một ở phía dưới và chéo
nhau.
- Để được cấp bằng chứng nhận học viên phải nhận được đủ chứng chỉ (hay nhóm chứng
chỉ tương đương) cho từng môn của chương trình đào tạo ban đầu và hệ thống quản lý
chỉ cho phép học viên học các môn tương đương với môn đang phải học theo chương
trình và không thay đổi trình tự trước sau các môn học đã xác định trong chương trình
đào tạo ban đầu.
Có những môn không thể thay thế được (ví dụ môn Q) hoặc có ít cách thay thế hơn (như
môn L) chỉ có một cách thay thế bằng OP).
Nếu với môn đang phải học, học viên đã nhận được chứng chỉ trước đó thông qua việc đã
học các môn tương đương thì học viên không phải học lại môn này.
Ví dụ:
- Nếu trong quá trình học, học viên đã nhận được chứng chỉ các môn S, D hoặc Z, E, D
hoặc W, E, D hoặc S, E, C hoặc W, E, R thì coi như đã nhận được chứng chỉ môn X.
Hai cách học gọi là khác nhau, nếu có ít nhất một môn trong cách học thứ nhất không có
trong cách học thứ hai hoặc ngược lại.
Ví dụ:
- Chương trình gồm chỉ một môn S có thể thay thế bằng WE, hoặc ZX, hoặc WX, hoặc ZE;
- Nếu chương trình là AL thì có 6 cách học: AL, QWL, QZL, AOP, QWOP, QZOP;
- Nếu chương trình là AQL thì có hai cách học: AQL, AQOP;
Yêu cầu: cho chương trình học P là một xâu không quá 10 ký tự tên môn.
Dữ liệu: vào từ file văn bản EDU.INP gồm một dòng chứa xâu P.
Kết quả: đưa ra trong xâu văn bản EDU.OUT số nguyên - số cách học lấy chứng chỉ.
Ví dụ:
EDU.INP
AL
EDU.OUT
6
Đề thi chọn học sinh giỏi THPT tỉnh Thanh Hoá
Năm học 2001-2002
Bài 1 Phương trình kiểu Fermat (6 điểm)
Tìm tất cả các nghiệm nguyên của phương trình:
Với x
i
nguyên, 0 <= x
i
<= 9 và x
1
khác 0
Ví dụ: Với n = 3 ta có nghiệm nguyên sau: 135 = 1+3
2
+5
3
Với n = 4 ta có nghiệm nguyên sau: 1306 = 1+3
2
+ 0
3
+ 6
4
a. Viết chương trình tìm tất cả nghiệm nguyên dương của phương trình trên với n =3.
b. Viết chương trình tìm tất cả nghiệm nguyên dương của các phương trình với n <13.
Dữ liệu vào : n nhập từ bàn phím
Kết quả ra: In nghiệm ra màn hình.
File chương trình nguồn: BAI1.PAS
Bài 2: Thuật toán sinh dãy số (6 điểm)
Một bài toán tưởng chừng như rất đơn giản nhưng trong toán học còn đang bỏ ngỏ.
Định nghĩa thuật toán sinh dãy số:
Cho số tự nhiên k
1. Nếu k=1: dừng chương trình.
2. Nếu k chẵn: sinh phần tử bằng k/2
3. Nếu k lẻ: Sinh phần tử bằng 3k+1
4. Quay lại bước 1.
Ví dụ: Bắt đầu với k =34 thì thuật toán trên sinh ra dãy
34 17 52 26 13 40 20 10 5 16 8 4 2 1
(Dãy có 14 phần tử, phần tử lớn nhất bằng 52)
Như vậy thuật toán sẽ sinh ra một dãy số và dãy số này có nhiều tính chất rất kỳ lạ mà
toán học chưa chứng minh được những tính chất đó. Biết rằng với sự tính toán của tất cả
các máy tính hiện tại dãy số này có một tính chất là với mọi số k thuật toán đều dừng khi
k =1.
Biết số k (k lớn nhất có thể làm được) hãy viết chương trình in ra số phần tử của dãy số
sinh bởi k và giá trị phần tử lớn nhất của dãy.
Dữ liệu vào : Cho trong file Text tên file nhập vào từ bàn phím.
Dòng đầu là số n (số các số k cần phải tính), n dòng tiếp theo mỗi dòng là một số k.
Kết quả ra : In ra File BAI2.OUT
Gồm n dòng. Mỗi dòng 2 số, mỗi số cách nhau một dấu cách, là số phần tử của dãy sinh
bởi k tương ứng và phần tử lớn nhất trong dãy đó.
Ví dụ:
File chương trình nguồn: BAI2.PAS
Bài 3: Du lịch(8 điểm)
Một Quốc gia có n Thành phố (3 <= n <= 1000) và một lưới gồm m (2 <= m <=
100000) con đường nối giữa hai thành phố. Một khách du lịch xuất phát từ Thanh phố p
tới Thành phố q (3 <= p, q <= 1000) và quay trở về p. Để tham quan được nhiều, yêu
cầu của khách là khi về phải đi lại một số ít nhất những con đường đã đi qua.
Hãy viết chương trình in ra số lượng đường đi phải đi hai lần (đi và về) và hai tuyến
đường đi từ p tới q và về từ q trở lại p.
Dữ liệu vào: Cho trong file Text tên file nhập từ bàn phím, dòng đầu tiên ghi 2 số
nguyên, p và q là thành phố bắt đầu và kết thúc của hành trình. Hàng thứ hai ghi hai số
nguyên, n là số lượng các thành phố (được đánh số từ 1 tới n) và m là số lượng đường đi
giữa các thành phố. Mỗi hàng trong m hàng tiếp theo ghi hai số nguyên i và j (1 <= i, j
<= n, i khác j), nghĩa là giữa hai thành phố i và j có đường đi. Giữa các số trên cùng
hàng cách nhau một ký tự trắng.
Kết quả ra : ra file trip.out, dòng đầu tiên chứa một số nguyên là số những con đường
buộc phải đi và về. Hàng thứ hai ghi tuyến đường từ p tới q bao gồm cả p và q. Hàng thứ
ba ghi tuyến đường quay về từ q tới p bao gồm q và p. Nếu có nhiều tuyến đường thoả
mãn yêu cầu chỉ cần ghi một tuyến. Nếu không có đường đi giữa 2 thành phố p và q
trong file kết quả ghi số -1.
File chương trình nguồn: BAI3.PAS
File kết quả: dòng đầu tiên chứa câu trả lời đúng được 1/2 số điểm của Test, Dòng thứ 2
và 3 chứa giải pháp đúng được 1/2 số điểm còn lại của Test.
Đề thi tin học trẻ không chuyên toàn Quốc lần thứ VIII, năm 2002
Đề thi khối C: Trung học phổ thông
Bài 1. Mật khẩu
(Tên file chương trình:MATKHAU.???)
Một nhóm gồm k học sinh góp tiền mua một phần mềm dùng chung. Khi cài đặt phần
mềm này, người sử dụng cần phải nhập vào một mật khẩụ Khi biết các khách hàng của
mình là các học sinh say mê tin học, chủ cửa hàng thay vì đưa mật khẩu đã đưa cho mỗi
bạn một con số và sau đó nói rằng: Mật khẩu để cài đặt phần mềm là số nguyên dương
nhỏ nhất gồm không quá tám chữ số chia hết cho bất cứ số nào trong các số tôi đã đưa
cho các bạn.
Yêu cầu: Biết tất cả các số mà chủ cửa hàng đã đưa cho các học sinh, hãy tìm mật khẩu
để cài đặt phần mềm.
Dữ liệu: Vào từ file văn bản MATKHAU.INP:
- Dòng đầu tiên chứa số học sinh k (k <= 100).
- Dòng thứ hai chứa k số nguyên dương mà ông chủ cửa hàng đã đưa cho các học sinh,
hai số liên tiếp cách nhau bởi dấu cách.
Kết quả: Ghi ra file văn bản MATKHAU.OUT mật khẩu tìm được.
Ví dụ:
MATKHAU.INP
3
4 6 3
MATKHAU.OUT
12
Bài 2. Dãy số
(Tên file chương trình: DAYSO.???)
Cho một dãy gồm n ký tự (n <= 300), mỗi ký tự chỉ là một trong 3 dấu so sánh: > (lớn
hơn), < (nho? ho+n) hoa(.c = (ba(`ng).
Yêu cầu: Hãy tìm dãy số nguyên dương a1, a2, , an+1 sao cho khi chèn lần lượt các số
hạng của dãy số vào dãy ký tự đã cho thì các phép so sánh là đúng, đồng thời số lớn
nhất trong dãy số tìm được là nhỏ nhất.
Ví dụ: Cho dãy kí tự '>==<', dãy số cần tìm là 2 1 1 1 2 thỏa mãn 2>1=1=1<2
Dữ liệu: Vào từ file văn bản DAYSO.INP chứa dãy ký tự đã chọ
Kết quả: Ghi ra file văn bản DAYSO.OUT dãy số tìm được: dòng thứ i chứa số hạng thứ i
của dãỵ
Ví dụ:
DAYSO1.INP
>==<
DAYSO1.OUT
2
1
1
1
2
DAYSO2.INP
=<<>
DAYSO2.OUT
1
1
2
3
2
Bài 3. Lưới ô vuông
(Tên file chương trình: SQNET.???)
Cho một lưới ô vuông kích thước m dòng, n cột. Các dòng của lưới được đánh số từ 1 đến
m từ trên xuống dướị Các cột của lưới được đánh số từ 1 đến n từ trái sang phảịÔ nằm
trên giao của dòng i, cột j gọi là ô (i, j) của lưới và (i, j) gọi là tọa độ của ô nàỵ Một nhóm
gồm p học sinh tổ chức trò chơi đánh dấu như sau: Mỗi học sinh đánh dấu các ô của một
hình chữ nhật trên lướị Các hình chữ nhật này có thể giao nhaụ
Một tập S các ô của lưới ô vuông đã cho được gọi là miền liên thông bậc k (k <= p) nếu
thỏa mãn hai điều kiện sau:
1. Mỗi ô thuộc S có số lượng học sinh đánh dấu nó đúng bằng k.
2. Hoặc S có đúng một ô, hoặc nếu S có nhiều hơn một ô thì đối với hai ô bất kỳ của S
luôn có cách di chuyển qua các ô chung cạnh thuộc S để từ ô này đến được ô kiạ
Yêu cầu: Hãy đếm số miền liên thông bậc k=1,2, , p.
Dữ liệu: Vào từ file văn bản SQNET.INP:
- Dòng đầu tiên chứa hai số nguyên dương m, n là kích thước của lưới (m, n <= 100),
- Dòng thứ hai chứa số học sinh p (p <= 20),
- p dòng tiếp theo, mỗi dòng chứa thông tin về hình chữ nhật của một trong số p học
sinh bao gồm 4 số nguyên dương x, y, u, v, trong đó (x, y) là tọa độ của ô góc trên trái
và (u, v) là tọa độ của ô góc dưới phải của hình chữ nhật.
Kết quả: Đưa ra file văn bản SQNET.OUT gồm p dòng, dòng thứ i chứa số lượng miền liên
thông bậc ị
Ví dụ:
SQNET1.INP
100 100
3
10 10 30 30
20 20 50 50
40 40 60 60
SQNET1.OUT
3
2
0
SQNET2.INP
50 100
4
10 20 30 30
20 10 30 30
20 20 40 30
20 20 30 40
SQNET2.OUT
4
0
0
1
Đề thi Olympic tin học sinh viên toàn quốc 99' khối không chuyên
tại Huế, 25 tháng 4 năm 1999
(Thời gian làm bài: 180 phút)
Bài số 1:
Cho n điểm có toạ độ (x
i
,y
i
), i=1,2 n với n>4. Lập chương trình tìm 4 điểm sao cho 4
điểm này tạo thành một tứ giác có diện tích lớn nhất. Tệp chương trình phải đặt tên là
B1.PAS
Hãy chọn một hệ toạ độ thích hợp (gốc toạ độ, hệ số tỷ lệ cho hoành độ và tung độ) để
vẽ tất cả các điểm với số thứ tự của điểm đó ở bên cạnh cùng với các cạnh của tứ giác
tìm được trên màn hình. Diện tích của tứ giác tìm được cũng cần được thông báo trên
màn hình đồ hoạ
Dữ liệu vào lấy từ tệp văn bản có tên là B1.INP có cấu trúc như sau:
- Dòng đầu ghi giá trị n là số các điểm
- n dòng tiếp theo, mỗi dòng là hai số là hoành độ và tung độ của một điểm, hai số này
cách nhau một khoảng trống.
Bài số 2:
Cho một ma trận m dòng, n cột. Mỗi ô của ma trận được ghi một số tự nhiên. Đường đi
trong ma trận là một đường gấp khúc không tự cắt xuất phát từ một ô bất kỳ trong ma
trận, sau đó có thể hoặc rẽ sang trái, hoặc rẽ sang phải, hoặc đi lên, hoặc đi xuống, sao
cho các số ghi trong các ô trên đường đi theo thứ tự tạo nên một dãy số không giảm. Độ
dài của đường tính bằng số các ô mà đường đi qua. Lập chương trình tìm đường đi dài
nhất trong ma trận. Tệp chương trình phải đặt tên là B2.PAS
Dữ liệu vào lấy từ một tệp văn bản có tên là B2.INP có cấu trúc như sau:
- Dòng đầu tiên gồm hai số là số dòng và số cột của ma trận, hai số này cách nhau một
khoảng trống.
- Các dòng tiếp theo, mỗi dòng là các số ứng với một hàng của ma trận theo thứ tự. Các
số này cách nhau một khoảng trống.
Kết quả được ghi trong tệp văn bản có tên là B2.OUT có cấu trúc như sau:
- Dòng đầu tiên là số các ô mà đường đi qua
- Mỗi dòng tiếp theo là thông tin của một ô có đường đi qua theo thứ tự. Mỗi dòng gồm 3
số lần lượt chỉ số hàng, chỉ số cột và số ghi trong ô đó.
Trong ví dụ ở hình dưới đây thì ta có B2.INP và B2.OUT như dưới đây:
1 2 5 5 4 7
6 7 9 6 4 3
4 5 1 1 3 4
4 7 3 5 4 9
7 3 4 7 6 8
B2.INP B2.OUT
5 6 7
1 2 5 5 4 7 3 3 1
6 7 9 6 4 3 3 4 1
4 5 1 1 3 4 3 5 3
4 7 3 5 4 9 4 5 4
7 3 4 7 6 8 5 5 6
5 6 8
4 6 9
Bài số 3:
Một toà nhà có mặt bằng hình chữ nhật được chia thành một lưới gồm m x n ô có kích
thước như nhau. Người ta ngăn phòng bằng các bức tường, mỗi phòng là một số nguyên
vẹn các ô kề nhau, có cửa thông sang nhau. Do không có phần mềm vẽ ảnh, một người
dùng một hệ soạn thảo văn bản sử dụng các ký tự để vẽ sơ đồ phòng của toà nhà. Khi
soạn thảo anh ta thay những chỗ có tường bằng các ký tự "*" còn cửa thông phòng cũng
như cửa ra vào bằng các ký tự "ắ " hoặc "ẵ ", chỗ trống trong phòng dùng các ký tự trắng
(Space). Số ký tự dùng để thể hiện tường, của các ô là tùy ý miễn là kích thước của các ô
tính theo số ký tự phải giống nhau. Hình vẽ dưới đây là nội dung tệp văn bản thể hiện
mặt bằng một ngôi nhà gồm 8 phòng trên một lưới 3x5 ô, mỗi ô là ma trận 3x5 ký tự kể
cả tường và cửa.
******-***-***-***-**
* * * * ẵ *
**-*****************
ẵ ẵ * ẵ ẵ ẵ
********************
* * ẵ ẵ * *
**-*******-*******-**
Tệp văn bản trên có tên là B3.INP. Lập chương trình có tên là B3.PAS để tìm một bức
tường trên một ô cần phải phá để lắp cửa thông phòng tạo ra một căn phòng có diện tích
lớn nhất có thể. Không phải kiểm tra tính đúng đắn của dữ liệu. Kết quả phải đưa ra một
tệp văn bản có tên là B3.OUT có cấu trúc như sau:
- Dòng đầu tiên là thông tin về bức tường cần phá bao gồm 3 số theo thứ tự là chỉ số
hàng, chỉ số cột của ô có bức tường phải phá và thứ tự của bức tường trong ô. Thứ tự
của các bức tường của ô được quy ước như sau: 1 là tường hướng đông, 2 là tường
hướng tây, 3 là tường hướng nam, 4 là tường hướng bắc
- Số các phòng sau khi phá tường
- Các dòng tiếp theo là diện tích các phòng tính theo số ô (sau khi phá tường) của hàng
tương ứng theo thứ tự từ trên xuống dưới, trong mỗi hàng thứ tự tính từ trái qua phải.
Những phòng nào nằm trên nhiều hàng mà hàng trên đã kể rồi thì hàng dưới không kể
nữa. Các số này cách nhau một khoảng trống
Trong ví dụ có một lời giải: (nội dung tệp B3.OUT) là:
2 2 3
7
6 1 1 2
3
1 1
Chú ý:
Thí sinh cần ghi chương trình và kết quả vào tệp đúng tên đã quy định và không được ghi
vào chương trình tên thí sinh, tên đoàn và các dấu hiệu riêng khác. Đề bài gồm 2 trang.
Đề thi chọn học sinh giỏi 1999-2000
(Các bài tập tiếp theo)
Lập trình thực hiện các yêu cầu sau:
Chuột Mickey
Tên File chương trình: BL1B.PAS
dMickey là tên của con chuột máy do một nhóm thành viên của Câu lạc bộ Tuổi trẻ sáng
tạo vừa làm ra. Mickey có thể đi vòng quanh mê cung trong hình vẽ dưới. Khi Mickey đi
đến vị trí có đánh dấu bởi con số, nó sẽ phải lựa chọn một trong các hướng dịch chuyển.
Hành vi của con chuột Mickey khá là kỳ quặc và điều đó gây ấn tượng rất lớn cho mọi
người.
Các vị trí dánh dấu bởi con số của mê cung được gọi là các nút. Mickey chứa một số
nguyên X trong bộ nhớ của nó và có thể thực hiện tính toán với số này. Tại mỗi nút
(ngoại trừ nút 1), Mickey sẽ chọn hướng dịch chuyển tương ứng với số X, giảm X đi 1 và
dịch chuyển đến nút được chọn. Hướng dịch chuyển sẽ được lựa chọn theo qui tắc sau:
Nút 2: Tính X mod 3. Nếu kết quả là 0,1,2, Mickey di chuyển đến nút 7,1,4 tương ứng.
Nút 4: Gọi Y là số thu được từ X bằng cách viết các chữ số (trong hệ đếm thập phân) của
X theo thứ tự ngược lại. Nếu Y>X thì đi đến nút 6, trái lại đi đến nút 2.
Nút 6: Tính số lượng chữ số của X (trong hệ đếm thập phân). Nếu kết quả là số chẵn thì
đi đến nút 4, trái lại đi đến nút 7.
Nút 7: Tính (X*X) mod 7. Nếu kết quả là 0,1,2,4, Mickey di chuyển đến nút 2,6,8,0 tương
ứng.
Nút 8: Tính X mod 5. Nếu kết quả là 2 hoặc 3 thì đến nút 7, ngược lại đến nút 9.
Nút 9: Nếu vừa đến nút này từ nút 8 thì sẽ đến nút 0. Nếu vừa đến nút này từ nút 0 thì
sẽ đến nút 8.
Nút 0: Gọi Y là chữ số thứ ba tính từ hàng đơn vị trong các chữ số của X viết trong hệ
đếm thập phân (nếu X<100 thi` Y=0). Ne^'u Y<=7 thi` dde^'n nu't 7, tra'i la.i dde^'n
nu't 9.
Trước khi làm thực nghiệm, người ta đặt chuột tại nút 0 và nói cho nó số X. Con chuột
bắt đầu di chuyển. Mickey sẽ hiển thị số X trên màn hình thông báo của nó. Thí nghiệm
kết thúc khi chuột di chuyển đến nút 1 và số trên màn hình thông báo của nó sẽ là kết
quả của thực nghiệm. Nếu chuột chưa đến nút 1 mà giá trị của X đã giảm đến 0, thì thực
nghiệm bị lỗi và kết quả của thực nghiệm được ghi nhận là -1.
Yêu cầu: Cho biết số nguyên dương X được nói cho Mickey khi bắt đầu thực nghiệm, hãy
xác định kết quả thực nghiệm.
Dữ liệu: Vào từ file văn bản MICKEY.INP chứa số nguyên dương X (X<=10
9
) được nói cho
Mickey khi bắt đầu thực nghiệm.
Kết quả: Ghi ra file văn bản MICKEY.OUT kết quả thực nghiệm
Ví dụ:
MICKEY.INP MICKEY.OUT
5 -1
14 9
Cờ chữ thập
Tên File chương trình: BL2B.PAS
Một bàn cờ được chia lưới ô vuông. Các dòng được đánh số từ 1 đến 200 theo chiều từ
trên xuống dưới, các cột được đánh số từ 1 đến 200 theo chiều từ trái sang phải.
Hai người chơi lần lượt điền vào một ô (còn trống) của bàn cờ một ký hiệu riêng của mình
(chẳng hạn, một người dùng dấu x, một người dùng dấu o). Người nào đến lượt đi tạo
được một chữ thập trong số các ô đánh dấu của mình thì người đó thắng cuộc. Chữ thập
gồm 5 ô kề nhau có dạng:
x
x x x
x x x
Hoặc
Trong đó giả thiết x là ký hiệu của người thắng cuộc (các ký hiệu trong các ô còn lại
không quan trọng).
Yêu cầu: giả thiết biết một loạt các lượt đi của hai đấu thủ, hãy phát hiện kết cục của
cuộc chơi (có thể chưa phân thắng bại sau lượt đi cuối cùng, cũng có thể đã phân thắng
bại tại lượt đi nào đó không nhât thiết là lượt đi cuối cùng).
Dữ liệu: Vào từ file văn bản CHESS.INP. Dòng thứ i ghi lượt đi i (i=1,2, ) của cuộc chơi
gồm hai cặp số theo thứ tự là toạ độ dòng, cột của ô chọn của người đi trước và toạ độ
dòng, cột của ô chọn của người đi sau. Các số trên cùng một dòng ghi cách nhau ít nhất
một dấu trắng.
Kết quả: Ghi ra file văn bản CHESS.OUT gồm 1 dòng như sau:
-Nếu cuộc chơi chưa phân thắng bại thì ghi số -1
x x
x
x x
-Nếu cuộc chơi đã có kết cục thì ghi số hiệu người thắng (quy ước 1 là số hiệu người đi
trước, 2 là số hiệu người đi sau), tiếp theo là số thứ tự của lượt đi mà người đó thắng
cuộc.
Đề thi Olympic tin học sinh viên toàn quốc 99' khối chuyên
tại Huế, 25 tháng 4 năm 1999
(Thời gian làm bài: 180 phút)
Bài số 1:
Cho một số tự nhiên n (trong hệ đếm cơ số 10). Lập chương trình tìm số tự nhiên m lớn
nhất thoả mãn điều kiện sau:
- Các chữ số của m khi viết trong hệ đếm cơ số 16 đều khác nhau
- Tổng giá trị các chữ số của m quy đổi ra hệ đếm thập phân chính là n.
Dữ liệu vào nhập trực tiếp từ bàn phím. Nếu không có lời giải thì thông báo trên màn hình
câu "Không có lời giải". Nếu có lời giải thì hiện trên màn hình số m viết trong hệ đếm cơ
số 16. Tệp chương trình phải đặt tên là A1.PAS
Bài số 2:
Để đọc chữ bằng phương pháp quang học người ta thường dùng máy quét Scanner quét
văn bản thành ảnh dưới dạng một bản đồ các Bit sau đó dùng chương trình nhận dạng
chữ từ bản đồ Bit này
Bản đồ Bit là một mảng hình chữ nhật có m hàng và n cột, trong mỗi ô chứa một số 0
(thể hiện một điểm ảnh màu trắng). hoặc 1 (thể hiện một điểm ảnh màu đen). Người ta
cần nhận dạng chữ "T" trong bản đồ bit. Vùng điểm ảnh được xem là có hình chữ T nếu
nó thoả mãn các điều kiện sau đây:
- Vùng đó gồm toàn các ô đen (ô chứa Bit 1) và các ô khác tiếp giáp cạnh với các ô của
vùng này (nếu có) chỉ có thể là ô trắng (ô chứa Bit 0)
- Vùng đó có thể phân hoạch thành hai khối ô hình chữ nhật có hai cạnh tiếp giáp nhau
sao cho cạnh của hình chữ nhật này thực sự chứa trong cạnh của hình chữ nhật kia
Ví dụ trong hình sau có hai vùng hình chữ T. Có hai vùng khác không phải là vùng chữ T
vì vi phạm điều kiện thứ 2.
Hãy lập trình tìm ra các hình chữ T trong bản đồ Bit mà máy quét đã quét được. Tệp
chương trình phải đặt tên là A2.PAS
Dữ liệu vào được lấy từ tệp văn bản có tên là A2.INP có cấu trúc như sau:
- Dòng đầu là hai số m và n, hai số này cách nhau một khoảng trống
- m dòng tiếp theo mỗi dòng là dãy Bit mô tả các dòng tương ứng kể từ dòng đầu tới
dòng cuối
- Trong ví dụ, nội dung tệp A2.INP là:
8 11
00000000000
11110000110
11110111110
00100111110
00100000110
00011110000
11000010000
01100000000
Kết quả được ghi ra tệp A2.OUT gồm các dòng sau:
- Dòng đầu tiên là số k là số các chữ T phát hiện được, k sẽ là 0 nếu không có chữ T nào
- K dòng tiếp theo, mỗi dòng gồm 4 số, mỗi số cách nhau một khoảng trống, hai số đầu
là toạ độ góc trên bên trái, hai số cuối là toạ độ của góc dưới bên phải của hình chữ nhật
nhỏ nhất chứa chữ T tương ứng
Trong ví dụ trên tệp A2.OUT sẽ có nội dung như sau:
2
2 1 5 4
2 6 5 10
Bài số 3:
Một mạch điện gồm n điện trở được mắc với nhau theo kiểu song song hoặc nối tiếp hoặc
hỗn hợp cả hai kiểu. Người ta biểu diễn các mạch đó bằng một biểu thức cho dưới dạng
một xâu ký tự với cú pháp và ngữ nghĩa được xác định thích như sau:
- Nếu x là một điện trở có trị số là Rx thì x cũng là một mạch có điện trở Rx
- Nếu x là một mạch thì (x) cũng là một mạch có cùng điện trở với x
- Nếu x,y là 2 mạch có điện trở lần lượt là Rx và Ry thì (x+y) cũng là một mạch thể hiện
mạch mắc song song của x và y và có điện trở là 1/(1/Rx+1/Ry)
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 1 1 0
1 1 1 1 0 1 1 1 1 1 0
0 0 1 0 0 1 1 1 1 1 0
0 0 1 0 0 0 0 0 1 1 0
0 0 0 1 1 1 1 0 0 0 0
1 1 0 0 0 0 1 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0
- Nếu x,y là 2 mạch có điện trở lần lượt là Rx và Ry, thì (x*y) cũng là một mạch thể hiện
mắc nối tiếp hai mạch con x và y và có điện trở là Rx+Ry
Ví dụ mạch sau đây sẽ có biểu thức là (B*((A*(C+(D*G)))+(E*F)))
Cho một mạch điện thể hiện bằng một xây ký tự theo cú pháp đã nêu ở trên, trong đó
mỗi điện trở có tên là một ký tự khác nhau, cùng với trị số điện trở tương ứng của chúng.
Lập trình tính điện trở của mạch và vẽ sơ đồ mạch trên màn hình đồ hoạ (bạn không phải
kiểm tra tính đúng đắn của dữ liệu). Tệp chương trình phải đặt tên là A3.PAS
Dữ liệu vào lấy từ tệp văn bản tên là A3.INP có cấu trúc như sau:
- Dòng đầu là số các điện trở n
- Dòng thứ hai cho một xâu ký tự là biểu thức mạch tuân theo cú pháp mô tả mạch điện
nói trên
- n dòng tiếp theo, mỗi dòng gồm 1 ký tự và một số cách nhau một khoảng trống thể
hiện tên của điện trở và trị số của nó
Kết quả điện trở của toàn mạch cần được hiển thị trực tiếp trên màn hình. Sau đó chương
trình thông báo "bấm một phím bất kỳ để xem sơ đồ" và chờ để khi bấm một phím sẽ
chuyển sang chế độ đồ hoạ và vẽ sơ đồ mạch
Trong ví dụ trên nếu tệp A3.INP có nội dung là:
7
B*( (A*(C+(D*G) ) ) + (E*F) ) )
A 6
B 2
C 5
D 10
E 22
F 18
G 10
thì khi đó kết quả đưa ra sẽ là 10. Sau khi bấm một phím sẽ hiện lên sơ đồ mạch như
hình trên
OLYMPIC Tin học Sinh Viên lần thứ XI
Anh/Chịhãy lập trình giải các bài toán sau:
Bài 1: AO THUÂTTên chương trình: MAGIC.???
Trongbuổi giao lưu Olympic Tin học sinh viên tại Nha Trang, một bạn lên sânkhấu biểu
diễn ảo thuật vui. Nội dung của tiết mục là như sau: Trênsân khấu cóbày N (1 ≤N≤10)
máy tính PC, người biểu diễn mời N bạn khán giả lên sân khấu, mỗibạn sử dụng một máy
tính, tạo ra một xâu bít bất kỳ độ dài 255,đếm số bít bằng 1 trong xâu tạo thành, thực
hiện K lần việc đảo bít,mỗi lần đảo một bít tuỳ chọn, một bít có thể được đảo nhiều
lần,che một bit bất kỳ trong xâu nhận được, đếm số các bít bằng 1trong các bít không bị
che, sau đó báo cho người biểu diễn biết: Sốbít bằng 1 ban đầu, số lần đảo bít và số bít
bằng 1 ở lần đếmsau. Mọi công việc cần làm đều có các chương trình con phục
vụ.Ngườibiểu diễn sẽ viết ngay lên bảng giá trị bít mà bạn khán giả đãche. Kết quả trên
bảng sẽ có xâu N ký tự 0, 1 thể hiện các bit màngười biểu diễn đoán tương ứng lần lượt
với các bít N khán giảđã che.
Yêu cầu:Xác định xâu người biểudiễn viết trên bảng.
Dữ liệu:Vào từ file văn bản MAGIC.INP:
Dòng đầu tiênchứa 1 số nguyên N,N dòng sau: Mỗi dòngchứa thông tin của một khán giả
cung cấp gồm 3 số nguyên PK Q, trong đó P - số bít1 ban đầu, K - số lần đảo bít, Q - số
bít 1 ở lần đếm sau, 1≤K≤8*10
6
.
Kếtquả: Đưa rafile văn bản MAGIC.OUT xâu N ký tự 0, 1 tương ứng với xâu bít cần tìm.
Ví dụ:
Bài 2: CĂT DONGTên chương trình: CATDONG.???
Mộtđoạn văn bản được lưu trong file dưới dạng một chuỗi N ký tự (khôngchứa ký tự
xuống dòng). Giả sử các từ trong đoạn văn bản được phâncách bởi các khoảng
trắng.Ngườita muốn hiển thị đoạn văn bản trên trong một màn hình có chiều rộngM ký
tự. Để bảo đảm tính thẩm mỹ, khi cắt dòng, một từ phải nằmtrọn vẹn trên một dòng và
đầu dòng không có khoảng trắng. Như vậy,khi hiển thị, các khoảng trắng đầu dòng sẽ bị
xoá và cuối các dòngtrên màn hình sẽ có thể có các khoảng trắng. Trừ dòng cuối cùng,
cáckhoảng trắng cuối dòng này được xem là lãng phí. Mức độ lãng phítrên mỗi dòng được
tính bằng bình phương số khoảng trắng cuối dòng.Với một phương án cắt dòng cụ thể,
mức độ lãng phí được địnhnghĩa là tổng mức độ lãng phí trên các dòng (không kể dòng
cuối cùng).
Yêu cầu:
Hãy chỉ ra một phương án cắt dòng sao cho mức độ lãng phí là tốithiểu.
Dữ liệu:vào từ file văn bản tên CATDONG.INT gồm 2 dòng:Dòng đầu chứa sốM (1 <M <
256).Dòng thứ chứa đoạnvăn bản ban đầu. Số lượng ký tự N trong đoạn văn bản không
vượtquá 20 000 và các từ trong văn bản đều có chiều dài không vượt quáM.
Kếtquả: Đưa rafile văn bản CATDONG.OUT mô tả phương án cắt dòng: Dòng đầu
chứahai số K và S cho biết số dòng văn bản hiển thị và tổng mức độ lãngphí theo phương
án cắt dòng. Các số cách nhau bởi khoảng trắng Dòng thứ I trongK dòng tiếp theo chứa
1 số nguyên cho biết số thứ tự (trong đoạn vănbản ban đầu) của ký tự cuối cùng trong
dòng I của văn bản hiển thị.Ký tự đầu tiên của đoạn văn bản được đánh số là 1.Các số
cách nhau bởi khoảng trắng.
Vidụ
Bài3: Số STIRLINGTên chương trình: STIRL.???
ChoN đối tượng đánh số từ 1 tới N. Ký hiệu S (N, M) là số lượng cáchchia N đối tượng
này thành M tập con khác rỗng. S (N, M) được gọi làsố Stirling.
Ví dụ, với N=4 và M = 2, ta có S(4,2) = 7:
{1,2,3}/{4}
{1,2,4}/{3}
{1,3,4}/{2}
{2,3,4}/{1}
{1,2}/{3,4}
{1,3}/{2,4}
{2,3}/{1,4}
SốStirling có thể tính theo công thức đệ quy:
S(N,1)= 1N > 0
S(N,M)= M*S(N-1,M) + S(N-1,M-1)1 < M <N
Tuy vậy, ởđây chúng ta chỉ quan tâm tới tính chẵn lẻ của S(N,M), tức là giátrị S(N,M) mod
2.
Yêu cầu:
Với K cặp hai số N, M (1≤K≤10),hãy xác định tính chẵn lẻ của K giá trị S(N, M) tương
ứng.
Dữ liệu:vào từ file văn bản STIRL.INP:Dòng đầu tiên chứa số nguyên K, K dòng tiếp theo
mỗi dòng chứa 2 số nguyên N, M, 0 < M < N < 1 000 000 000.
Kếtquả:Đưa ra file văn bản STIRL.OUT Kgiá trị S(N,M) mod 2, toạ thành một xâu các ký
tự 0,1 độ dài K
Ví dụ:
STIRL INP
2
7 2
64 32
STIRL.OUT
10
Đề thi Olynpic sinh viên toàn quốc 2001.
(Tiếp theo)
Cơ số -2
Các nhà vật lý đã xác định được sự tồn tại của các phản hạt : Những hạt giống như
những hạt cơ sở bình thường nhưng có điện tích ngược dấu. Những phản hạt này tạo ra
sản vật chất, trong đó điện tử có điện tích dương, còn Proton thì ngược lại- có điện tích
âm, sản vật chất tạo ra phản thế giới. Về cơ bản, đó là thế giới giống như thế giới của
chúng ta. Hai thế giới không thể tiếp xúc nhau được; khi vật chất và phản vật chất tiếp
xúc, chúng ta sẽ bị phân huỷ, giải phóng năng lượng dưới dạng sóng. Như vậy, tuy không
tiếp xúc trực tiếp được, nhưng hai thế giới vẫn có thể trao đổi thông tin với nhau.
Tin học trong thế giới phản vật chất giống như tin học của chúng ta, chỉ có khác là thay vì
cơ số B = 2 thì ở đó họ sử dụng cơ số B=-2.
Xét số nhị phân biểu diễn theo cơ số B=-2. Khi đó, nếu X=x
n
x
n-1
x
1
x
0
, x
1
{0,1},i=n, n-
1, ,1,0.
Sang cơ số 10, ta có X=x
n
*(-2)
n
+ x
n-1
*(-2)
n-1
+ x
1
*(-2)
1
+x
0.
Ví dụ: X= 11010 ở cơ số -2 . Đổi sang cơ số 10, ta có:
X= 1*(-2)
4
+ 1*(-2)
3
+ 0*(-2)
2
+1*(-2)
1
+0
.
= 16 - 8 + 0 - 2
= 6
Với cơ số -2 ta có thể biểu diễn các số âm cũng như số dương, không cần phải có bít
riêng.
Ví dụ: 6 = 11010, -6 = 1110.
Để sẵn sàng tiếp xúc với các nền văn minh của phản thế giới, người ta phải chuẩn bị các
chương trình sử lý thông tin nhận từ phản thế giới. Nhiệm vụ của bạn là tính tổng và hiệu
2 số X và Y cho dưới dạng nhị phân cơ số B=-2, kết quả đưa ra cũng để dưới dạng cơ số
-2, các số X và Y có thể có độ dài tới 200 bít.
Dữ liêụ: Vào từ File văn bản BASEM2.INP 2 số nguyên X vàY ở dạng nhị phân cơ số -2,
các chữ số của X (và của Y) đựoc viết liên tiếp nhau dưới dạng cơ số 0 không có nghiã ở
đầu, mỗi số trên một dòng.
Kết quả: Đưa ra File văn bản BASEM2.OUT hai dòng, dòng đầu chứa tổng X+Y, dòng
thứ hai chứa hiệu X-Y, số đưa ra ở dạng nhị phân cơ số -2, các chữ số được viết liên tiếp
nhau dưới dạng chuỗi ký tự 0,1, không có số 0 không có nghĩa ở đầu.
Ví dụ:
BASEM2.
INP
BASEM2.
OUT
111
11011
Olynpic Tin Học sinh viên lần thứ XI. -Khối chuyên.
Bài 1 : Điều khiển Robot
Trong cuộc thi lập trình điều khiển Robot giữa các đội sinh viên của các trường đại học.
Ban giám khảo cung cấp cho các đội một loại Robot có khả năng thay đổi hình dạng bề
ngoài của nó.
Hình dạng bề ngoài của Robot được xác định bởi vectơ trạng thái G = (G
1
, G
2
, , Gn)
Các giá trị Gi thuộc khoảng [1, N] và khác nhau từng đôi một với mọi i.
Ta nói rằng hai trạng thái G và G’ là khác nhau nếu tồn tại ít nhất một chỉ số i mà Gi #
G’i.
Sau mỗi đơn vị thời gian, Vectơ G thay đổi theo một bảng quy tắc định sãn Q, trong đó,
nếu Qi = K, thì vào thời điểm kế tiếp giá trị của Gi sẽ bằng giá trị của Gk tại thời điểm
hiện tại.
Ví dụ với N = 5 và bảng biến đổi Q = (2, 1, 5, 3, 4) và Vectơ trạng thái hiện tại
G = ( 1, 2, 3, 4, 5), thì Vectơ G ở thời điểm tiếp theo sẽ là (2, 1, 5, 3, 4).
(Hình vẽ)
ở thời điểm tiếp theo nữa sẽ là G = (1, 2, 4, 5, 3).
Với N cho trước (2 N 80), các đội phải lập trình xác định bảng biến đổi Q. Đội nào
có bảng điều khiển mang lại cho Robot nhiều trạng thái khác nhau nhất từ một trạng thái
bắt đâù bất kỳ là đội thắng cuộc.
Yêu cầu: Xác định bảng biến đổi để thắng cuộc.
Dữ liệu: Vào từ File văn bản ROBOT . INP , gồm 1 số nguyên N.
Kết quả : Đưa đưa ra File văn bản ROBOT . OUT:
+ Dòng đầu tiên : Số nguyên M cho biết số trạng thái khác nhau mà Robot có thể mang,
+ Dòng thứ 2 : N số nguyên xác định bảng Q tìm được, các số cách nhau ít nhất một
khoảng trắng
Ví dụ :
Bài 2 : Ghép số
Cho hai số tự nhiên A có N chữ số và B có M chữ số (2 N, M 100). Xét các số
nguyên dương C có các tính chất sau:
+ Có N+M chữ số,
+ Có thể đánh dấu N chữ số trong C để các chữ số được đánh dấu ( giữ nguyên trình tự
xuất hiện trong C) tạo thành A và các chữ số không được đánh dấu (giữ nguyên trình tự)
tạo thành B.
Yêu cầu: Hãy tìm số lớn nhất Cmax và số nhỏ nhất Cmin thoả mãn điều kiện trên.
Dữ liệu : Vào từ File văn bản NUM . INP , gồm 2 dòng:
+ Dòng đầu số nguyên A,
+ Dòng 2 chứa số nguyên B.
Kết quả : Đưa ra File văn bản NUM . OUT 2 dòng:
+ Dòng đầu : Chứa số nhỏ nhất tìm Cmin được,
Dòng thứ 2: Chứa số lớn nhất Cmax tìm được. Ví dụ :
Olynpic Tin Học sinh viên lần thứ XI. -Khối chuyên.
Bài 3 : Chip
Ứng dụng công nghệ Nano, người ta đã sản xuất con Chip với hàng triệu chân trên 1
mm2. các linh kiện được cấy trên một đường tròn có dây dẫn điện, đảm bảo hai linh kiện
bất kỳ kề nhau ( trên đường tròn) đều dây dẫn nối trực tiếp. Các linh kiện được đánh số
từ 1 tới N (3 < N 10.000).
Thiết kế ban đầu được xây dựng trên cơ sở công nghệ cũ, nên mặc dù đáp ứng yêu cầu
phẳng hoá đồ thị ( không có đường giây dẫn giao nhau ngoài điểm chung có thể có ở tại
linh kiện), nhưng nếu bố trí chúng trên đường tròn thì có thể thứ tự các linh kiện theo vị
trí trên đường tròn không phải là từ 1 tới N mà là một hoán vị nào đó của các số 1,
2, ,N. Ngoài ra, ở sơ đồ cũ còn có thêm một số đường nối tạo thành những giây
cung( không giao nhau). Điều này sẽ cản trở đáng kể đến việc hoàn thiện và nâng cấp
tiếp theo mạch điện tử. Bước đầu, người ta đã nâng cấp chất lượng linh kiện( trên thực
chất, phải gọi là cụm linh kiện thì chính xác hơn), khử bỏ được các đường nối là dây
cung. Các linh kiện vẫn giữ nguyên cách đánh số trước đây để tránh nhầm lẫn khi sử
dụng kho tài liệu kỹ thuật đồ sộ vốn có.
Ở thiết kế ban đầu, người ta cho biết số linh kiện N trong mạch và các cặp linh kiện (I, J),
mà giữa chúng cần có đường nối trực tiếp. Dĩ nhiên giữa hai linh kiện I, J bất kỳ có không
quá một đường nối và số lượng đường nối không quá 2N-3 ( Yêu cầu phẳng hoá!). Bảng
thiết kế có dạng :
5
4 3
5 2
1 3
2 4
5 3
2 5
5 4
Sơ đồ cũ Sơ đồ mới
Trong bản thiết kế mới, các đường nối 4 với 5 và 4 với 3 bị loại bỏ và người ta chỉ nêu
trình tự bố trí chúng trên đường tròn, bắt đầu từ linh kiện 1 trở đi, cụ thể là 1, 3, 5, 2, 4.
Mọi chuyện sẽ đơn giản nếu người ta còn giữ lại được bản vẽ sơ đồ thiết kế cũ. Nhưng
không may, bản vẽ này lại bị thất lạc. Ta chỉ có thể dựa trên số liệu về các đường nối trực
tiếp còn lưu lại để xác định bản thiết kế mới.
Yêu cầu:
Từ thông tin ở bản thiết kế cũ, hãy xác định bản thiết kế mới.
Dữ liệu:
Vào từ File văn bản CHIP. INP chứa nội dung của bản thiết kế cũ :
+ Dòng đầu tiên chứa số nguyên N,
+ Các dòng sau: Mỗi dòng một cặp số nguyên I,J, cho biết hai chân I và J được nối với
nhau, 1 I, J N, I # J.
+ Các số trên cùng một dòng cách nhau bởi khoảng trắng.
Kết quả:
Đưa ra File văn bản CHIP . OUT mô tả nội dung bản thiết kế mới:
Đưa N dòng, mỗi dòng chứa một số nguyên xác định trình tự bố trí các linh kiện trên
đường tròn, bắt đầu từ 1 trở đi theo đường hướng đến chân có chỉ số nhỏ hơn trong số
hai chân nối trực tiếp với nó.
Ví dụ :
CHIP. INP CHIP. OUT
5 1
4 3 3
5 2 5
1 3 2
4 2 4
5 3
1 4
5 4
Olynpic Tin Học sinh viên lần thứ XI. -Khối chuyên.
Bài 1: Sổ xố