Tải bản đầy đủ (.docx) (47 trang)

Pascal 1 Mot so bai tap Pascal hay

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (464.14 KB, 47 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

Câu lạc bộ tin học <i><b>Chơng trình đặt tên là CLUB.PAS</b></i>


“ Cánh cửa câu lạc bộ Tin học luôn luôn rộng mở, chỉ cần ban ham thích tin
học và có một chút kiên nhẫn. “ - Đó là thơng báo của Hội đồng khoa học thành phố
Informatics. Nhiều bạn trẻ nô nức đến ghi tên sinh hoạt. Nhng trớc cửa câu lạc bộ là
một cánh cửa với khoá số điện tử. Khi bạn đến gần thì bộ cảm biến hồng ngoại sẽ tự
động nhận biết và kích hoạt Menu trợ giúp hớng dẫn mở cửa trên màn hình vi tính đặt
sau ơ kính, trên đó cho biết: mã vào cửa là một số có N chữ số, ( 1 Ê N Ê 10), mỗi
chữ số có thể nhận giá trị từ 0 đến M ( 1Ê M Ê 9) và sau đó là K gợi ý, mỗi gợi ý có
dạng: Code L, trong đó Code là số có N chữ số, mỗi số trong phạm vi từ 0 đến M;
nếu bạn chọn mã Code này thì chỉ có L chữ số trong đó là trùng với mã mở cửa cả về
vị trí lấn giá trị. Trên màn hình ghi rõ: K gợi ý này là vừa đủ để bạn tìm đ ợc mã vào
cửa cho ngày hơm nay.


Hãy lập trình giúp các bạn u thích tin học xác định khố mở cửa câu lạc bộ.
<i>Dữ liệu: vào từ file văn bản CLUB.INP:</i>


Dòng đầu là 3 số nguyên N M K


 <b>Dòng thứ i trong K dòng tiếp theo ghi 2 giá trị Code</b>i Li
<i>Kết quả: đa ra file văn bản CLUB.OUT mã tìm đợc.</i>


<i>VÝ dơ:</i>


CLUB.INP CLUB.OUT


3 4 4 120


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Trị chơi điện tử <i><b>Chơng trình đặt tên là PITON.PAS</b></i>


Hiếu - em của Trung, rất thích trị


chơi điện tử Con Trăn. Nội dung của trò chơi
này là trên lới ơ vng kích thớc N*N ơ có một
con trăn và M con thỏ, mỗi con ở một ô riêng
biệt. Ban đầu trăn có độ dài 2 ơ. Bằng các phím
điều khiển Trái ( L), Phải (R), Lên (U), Xuống
(D) ngời ta di chuyển đầu trăn sang trái, phải,
lên trên hoặc xuống dới, mỗi lần bấm đầu trăn
chuyển một ô, đuôi trăn cũng sẽ chuyển một ô,
nơi có phần thân trăn trớc đuôi. Trăn chỉ đợc
chuyển đông trong phạm vi lới đã cho và
khơng đợc tự cắt. Nếu tự cắt - trị chơi sẽ kết
thúc.Nếu đầu trăn tới ơ có thỏ, thì nó sẽ ăn con
thỏ đó. Thỏ có thể to bé, béo gầy khác nhau.
Mỗi con thỏ có một lợng ca lo K riêng. Sau khi
ăn thỏ có lợng ca lo K, thì trong K lần bấm
phím điều khiển tiếp theo đuôi trăn vẫn ở
nguyên chổ cũ, nh vậy trăn sẽ dài thêm K ô.
Nếu trong khi đang lớn dài ra, trăn ăn thêm thỏ
mới trăn sẽ tiếp tục dài ( nếu không bị kết
thúc) cho đến khi phần dài thêm bằng tổng
l-ợng ca lo thu đợc.


Quá mệt mỏi vì bị em bất chơi đi chơi
lại nhiều lần để xem, Trung quyết định lập
ch-ơng trình minh hoạ tự động. Để làm đợc việc
đó cần phải xây dựng kịch bản, tức là mô tả
trạng thái ban đầu của lới và trình tự bấm các
phím điều khiển. Đángtiếc, trong lúc vội vàng,


một số kịch bản của Trung không thật hợp lý:


trăn tự cắt làm trị chơi kết thúc giữa chừng.
Ngồi ra, trong kịch bản khơng có sai sót nào
khác. Hãy kiểm tra xem với kịch bản cho trớc
trò chơi kết thúc sau lần bấm phím thứ mấy.
Nếu khơng mâu thuẫn thì trị chơi sẽ kết thúc
sau lần bấm phím cuối cùng. Để mô tả tạng
thái của lới, các dòng và cột đơch đánh số từ 1
tới N từ trờn xung di v t trỏi qua phi.


<i>Dữ liệu: vào từ file văn bản PITON.INP:</i>
Dòng đầu tiên là 2 sè nguyªn N M ( 2 £


N £ 50, 0 £ M £ 50),


 Dòng thứ 2 chứa toạ độ đầu v uụi ca


trăn: X1, Y1, X2, Y2 (ẵX1-X2ẵ+ẵY1-Y2ẵ= 1),
 Dßng thø i trong M dßng tiÕp theo: chøa 3


số nguyên Ai Bi Ci - ô chứa thỏ thứ i và


l-ợng ca lo của nó, ( 1£ Ai, Bi £ N, 0 £ Ci


£ 10),


 Các dịng tiếp theo: mỗi dịng mơ tả một
phím bấm gồm 1 ký tự trong số các ký tự L,
R, U, D và số nguyên dơng xác nh s ln
bm liờn tip phớm ny.



Các dữ liệu trên một dòng cách nhau
ít nhất một dấu cách.


<i>Kết quả: đa ra file văn bản PITON.OUT sè</i>


nguyên, xác định thời điểm trò chơi kết thúc
Ví dụ 1:


PITON.INP PITON.OUT


5 3 17


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>R . . . .</b>
<b>. . . . .</b>
<b>. .R . .</b>
<b>. . . P .</b>
<b>. . . PR</b>


<b>R . . . .</b>
<b>. . . . .</b>
<b>. .RP .</b>
<b>. . . P .</b>
<b>. . . . R</b>


<b>R . . . .</b>
<b>. . . . .</b>
<b>. .PP .</b>
<b>. . . . .</b>
<b>. . . . R</b>



<b>R P. . .</b>
<b>. .P . .</b>
<b>. .PP .</b>
<b>. . . . .</b>
<b>. . . . R</b>


<b>PPP . .</b>
<b>. .P . .</b>
<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . R</b>


<b>. . . . .</b>
<b>P . . . .</b>
<b>P . . . .</b>
<b>P . . . .</b>
<b>P . . . R</b>


<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . .</b>
<b>. PPPP</b>


Sau lÇn bÊm 0 1 2 4 6 10 14


<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . P</b>


<b>. .PPP</b>


<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . PP</b>
<b>..P. PP</b>


<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . . .</b>
<b>. . . PP</b>
<b>. .P XP</b>


Sau lÇn bÊm 15 16 17
VÝ dô 2:


PITON.INP PITON.OUT


3 0 1


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Hội nghị bàn trịn <i><b>Chơng trình đặt tên là CONF.PAS</b></i>


Tổng th ký Đại hội đồng Liên hợp quốc triệu tập một cuộc họp có N nhà ngoại
giao của N tổ chức tham gia. Các đại diện ngoại giao đợc bố trí ngồi quanh một bàn
trịn. Giữa một số tổ chức có quan hệ căng thẳng, vì vậy khơng thể xếp họ ngồi cạnh
<i>nhau đợc. Thông tin về quan hệ giữa các tổ chức đợc cho dới dạng cặp số nguyên i j, </i>
nếu giữa 2 tổ chức này có quan hệ căng thẳng.


Hãy lập trình giúp Tổng th ký Liên hợp quốc bố trí chổ ngồi quanh bàn họp.


Các tổ chức đợc đánh số từ 1 tới N, 0 < N Ê 500).


<i>Dữ liệu: vào từ file CONF.INP, dòng đầu tiên chứa số nguyên N, các dòng sau, </i>
mỗi dòng một cặp số i j , cho biết các đại diện i và j không ngồi cạnh nhau đợc. Kết
thúc là một dòng chứa 2 số 0.


<i>Kết quả: đa ra file CONF.OUT: Nếu khơng có cách bố trí thoả mãn u cầu thì </i>
đa ra thơng báo KHONG CO, trong trờng hợp ngợc lại - đa ra dãy N số nguyên xác
định vị trí ai ngồi cạnh ai quanh bàn trịn.


VÝ dơ:


CONF.INP CONF.OUT


11 1 9 7 4 11 5 8 2 10 3 6


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Mã hoá kép <i><sub>Chơng trình đặt tên là </sub></i>


<i>ENCRYPT.PAS</i>


Để đảm bảo nội dung trao đổi qua E-mail tránh đợc các cặp mắt tò mị khơng
cần thiết Alice thoả thuận với các bạn của mình về cách mã hố nh sau:


 Xố tất cả các dấu cách và các ký tự không phải là chữ cái, chuyển nội dung nhận
đợc sang chữ cái in hoa,


 Đẩy phải S vị trí: Thay mỗi chữ cái trong văn bản bằng chữ cái đứng sau nó S ( 1 Ê
S Ê 25) vị trí trong bản chữ cái tiếng Anh, việc xác định chữ cái thay thế đợc tiến
hành vòng tròn, sau Z là A,



 Chia văn bản nhận đợc thành từng nhóm M ký tự ( 5 Ê M Ê 20) ( nhóm cuối cùng
có thể ít hơn M ), đảo ngợc trình tự viết các ký tự trong mỗi nhóm,


 Chia văn bản nhận đợc theo từng nhóm 5 ký tự viết cách nhau một dấu cách, mỗi
dòng chứa 10 nhóm ( trừ dịng cuối cùng có thể ít hơn).


Để ngời nhận có thể giải mã, văn bản đã mã hoá đợc truyền đi kèm với một
<i>đoạn nội dung trớc khi mã hố (Khố giải mã).</i>


<i>VÝ dơ: Văn bản ban đầu là Meet me in St. Louis, Louis. vµ S = 2, M = 6, kết quả các </i>
bớc mà hoá sẽ là: <i>Meet me in St. Louis, Louis.</i>




<i>MEETMEINSTLOUISLOUIS</i>


<i>OGGVOGKPUVNQWKUNQWKU</i>


<i>GOVGGOQNVUPKWQNUKWUK</i>


<i> GOVGG OQNVU PKWQN UKWUK</i>
Văn bản đợc truyền đi với khố là LOUIS.


Hãy lập trình xác định các tham số S và M dùng để mã hoá. Nếu văn bản không thể
giải mã đợc ( do lỗi khi mã hố hay từ khố sai) thì đa ra thụng bỏo NO.


<i><b>Dữ liệu: Vào từ file văn bản ENCRYPT.INP:</b></i>



Dòng đầu tiên là số nguyên N cho biết số nhóm trong văn bản đã mã hố ( 4 Ê N
Ê 200),


 Các dòng tiếp theo: văn bản đã mó hoỏ,
Dũng cui cựng: Khoỏ gii mó.


<i><b>Kết quả: Đa ra file văn bản ENCRYPT.OUT một dòng chứa 2 số nguyên S và M, cách </b></i>


nhau mt du cỏch hoc thông báo NO, nếu không thể giải mã đợc.


<i><b>VÝ dô:</b></i>


ENCRYPT.INP ENCRYPT.OUT


4 2 6


GOVGG OQNVU PKWQN UKWUK
LOUIS


TÝnh thuÕ


Để tăng ngân sách qua việc thu thuế và đảm bảo dộ tin cậy cao trong việc xử lý tự
động các bản khai, chính phủ một quần đảo TháI Bình Dơng quyết định áp dụng biểu
thuế mới nh sau: Nếu X là giá trị thuế mức cũ và Y là giá trị thuế mới, thì Y phảI thoả
mãn các điều kiện sau:


 Y  X, Y - nguyên,


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Không tồn tại số nguyên Z < Y và thoả mÃn 2 điều kiện trên.


HÃy lập trình tính giá trị thuế mới theomức thuế cũ.


<i>Dữ liệu: Vào từ file VAT.INP:</i>
Dòng đầu: số nguyên N,


Dòng thø 2: N sè nguyªn d1 d2 . . . dn . Các số trên 1 dòng cách nhau ít nhất 1 dấu
cách,


Dòng thứ 3: X ( X > 0), không quá 50 chữ số.
<i>Kết quả: Đa ra file VAT.OUT giá trị Y.</i>


<i>Ví dụ:</i>


VAT.INP VAT.OUT


3 20


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

§ång nghiƯp


Để đánh giá hiệu quả của ứng dụng tin học vào đời sống, ngời ta tổ chức một
cuộc hội thảo lớn qua mạng máy tính, trong đó mọi ngời đều tự do trao đổi ý kiến trực
tiếp từng đơi một. Có N ngời tham dự hội thảo (1 < N Ê 30 000), đánh số từ 1 đến N.
Những ngời tham dự hội thảo đợc chia thành 2 lớp: Nhà Doanh nghiệp và Nhà Tin
học. Ban tổ chức ghi biên bản thống kê dới dạng dãy phân loại P1, P2, P3,.. ., PM, trong
đó PK là cặp số i j, 0 Ê i Ê N, 1 Ê j Ê N, 1 Ê K Ê M. Nếu i > 0, thì cặp i j nói lên
rằng ngời i và ngời j khơng phải là đồng nghiệp ( tức là thuộc 2 lớp nghề khacs nhau).
Nếu i = 0, thì có nghĩa là ý kiến ngời j có những điểm đáng lu ý và ngời ta cần biết
cho đến thời điểm này chắc chắn j có bao nhiêu ngời là đồng nghiệp và bao nhiêu ngời
là ở ngành khác.



Có thể có một PL nào đó ghi thơng tin mâu thuẫn với các PK trớc đó thì ngời ta
bỏ qua nó, coi nh PL khơng tồn tại.


VÝ dô: P I j


1 1 3


2 5 2


3 2 4


4 4 5


5 0 2


6 1 4


7 1 2


8 0 4


P4 = (4, 5) mâu thuẫn với P2 và P3 nên ngời ta sẽ bỏ qua nó, P7 cũng sẽ bị bỏ qua vì
mâu thuẫn với các thơng tin trớc đó. P5 địi hỏi xác định chính xác có bao nhiêu ngời
là đồng nghiệp với 2 và bao nhiêu ngời là ở ngành khác. Trong trờng hợp này không
thể xác định rõ ai là đồng nghiệp với 2, nhng biết chính xác có 2 ngời khác nghề với 2
( là 4 và 5).


Yêu cầu lập trình xác định số lợng ngời đồng nghiệp và khác ngành cho câu
hỏi 0 j trong biờn bn.



<i>Dữ liệu: vào từ file NETCONF.INP:</i>
Dòng đầu là số nguyên N,


Các dòng sau: mỗi dòng một cặp số i j, cách nhau ít nhất một dấu cách. Số lợng
cặp số không vợt qu¸ 1 000 000.


<i>Kết quả: Đa ra file NETCONF.OUT: Mỗi dòng tơng ứng với một cặp số 0 j trong file</i>
input, gồm 4 số nguyên L J Q1 Q2, trong đó L là thứ tự của cặp 0 j trong file input,
Q1 - số đồng nghiệp xác định đợc, Q2 - số ngời khác ngành xác định đợc.


<i>VÝ dô:</i>


NETCONF.INP NETCONF.OUT


5


1 3 5 2 0 28 4 2 2
5 2


2 4
4 5
0 2
1 4
1 2
0 4


bài tập tin học
ĐH KHTN 04/1999


<i>Thời gian: 180 phót</i>








<i><b>Bµi 1. D·y sè khác nhau.</b></i>


Xét dÃy 4 số nguyên không âm ( P1,P2,P3,P4). Nếu 4 số này không bằng nhau thì ngời ta cã


thể biến đổi để nhận đợc dãy 4 số mới (ẵP1-P4ẵ,ẵP1-P2ẵ,ẵP2-P3ẵ,ẵP3-P4ẵ).


Ví dụ: với dãy số ( 0, 1, 0, 2) ta có thể biến đổi nh sau:
(0,1,0,2)  ( 2, 1, 1, 2)  (0, 1, 0, 1)  (1, 1, 1, 1).


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

H·y lËp tr×nh nhËp sè N ( 0 < N £ 10) h·y tìm dÃy số không âm ( P1,P2,P3,P4) có Pi lớn


nhất là nhỏ nhất ( i = 1,2,3,4), chuỗi các biến đổi nêu trên có thể thực hiện đúng N ln.


<i>Dữ liệu: vào từ file P4.INP, mỗi dòng một số nguyên N không âm không quá 10.</i>


<i>Kết quả : đa ra file P4.OUT, mỗi dòng gồm 5 số nguyên không ©m N P</i>1 P2 P3 P4 øng với


từng dòng của file dữ liệu vào.


<i>Ví dụ:</i>


P4.INP P4.OUT


3 3 1 0 0 0


5 5 0



<i><b>Bài 2. Hội nghị bàn tròn.</b></i>


Tng th ký i hội đồng Liên hợp quốc triệu tập một cuộc họp có N nhà ngoại giao của N
tổ chức tham gia. Các đại diện ngoại giao đợc bố trí ngồi quanh một bàn trịn. Giữa một số tổ chức
có quan hệ căng thẳng, vì vậy khơng thể xếp họ ngồi cạnh nhau đợc. Thông tin về quan hệ giữa các
<i>tổ chức đợc cho dới dạng cặp số nguyên i j, nếu giữa 2 tổ chức này có quan hệ căng thẳng.</i>


Hãy lập trình giúp Tổng th ký Liên hợp quốc bố trí chổ ngồi quanh bàn họp. Các tổ chức
đợc đánh số từ 1 tới N, 0 < N ấ 500).


<i>Dữ liệu: vào từ file CONF.INP, dòng đầu tiên chứa số nguyên N, các dòng sau, mỗi dßng </i>


một cặp số i j , cho biết các đại diện i và j không ngồi cạnh nhau đợc. Kết thúc là một dịng chứa 2
số 0.


<i>KÕt qu¶: đa ra file CONF.OUT: Nếu không có cách bố trí thoả mÃn yêu cầu thì đa ra thông</i>


bỏo KHONG CO, trong trờng hợp ngợc lại - đa ra dãy N số nguyên xác định vị trí ai ngồi cạnh ai
quanh bàn trịn.


VÝ dơ:


CONF.INP CONF.OUT


11 1 9 7 4 11 5 8 2 10 3 6
1 4


1 7
5 7
10 7


10 8
10 9
3 4
0 0


<i><b>Bµi 1. Ma trËn lín nhÊt</b></i>


XÐt hai ma trËn A vµ B cïng kÝch thíc. Nãi ma trËn A lớn hơn ma trận B, nếu khi so sánh theo
dòng các phần tử tơng ứng của A và B, ở cặp phần tử khác nhau đầu tiên, phần tử của ma trận A lớn hơn
phần tử tơng øng cđa B.


VÝ dơ: Cã A B
4 5 3 4 5 3
2 8 9 2 8 1
1 7 6 6 -1 7
Ta cã A > B , v× A[2,3] > B[2,3].


Cho ma trận A kích thớc M*N ( 1 Ê M,N Ê 387). Với các phép biến đổi:
- Đổi chổ 2 dòng,


- Đổi chổ 2cột,


có thể tạo ra dÃy ma trận sắp xếp theo thứ tự tăng dần.


HÃy tìm phần tử ci cïng ( A[M,N] ) cđa ma trËn lín nhÊt.


<i>D÷ liệu: vào từ file MT.INP:</i>


- Dòng đầu : M N,



- Các dòng sau: chứa các phần tử của A, sắp xếp theo dòng, các phần tử cách nhau một dấu cách
hoặc nhóm dấu xuống dòng.


Cỏc phn t của A khác nhau từng đôi một, nguyên và thuộc phạm vi Longint.


<i>Kết quả: đa ra file MT.OUT số nguyên A[M,N] tìm đợc.</i>


<i>VÝ dơ: MT.INP</i> MT.OUT


2 3 5


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

2 8 1


<i><b>Bµi 2. Số nhị phân Fibonacci</b></i>


Xét dÃy số Fibonacci F0, F1, F2, F3, . . . ,Fn, . . . víi F0 = F1 = 1.


Một số nguyên dơng X có thể biểu diễn một cách đơn trị dới dạng:
X = iFi,


trong đó i = (0, 1), i*i+1 = 0.


Dãy (1, 2, . . .,n) đợc gọi là dạng biểu diễn Nhị phân Fibonacci của số X.


Cho hai sè nguyên X và Y dới dạng Nhị phân Fibonacci ( X Ê Y). HÃy tìm X*Y và X div Y dới dạng
biểu diễn Nhị phân Fibonacci.


<i>Dữ liệu: vào từ file FIB.INP, gồm 2 dòng, mỗi dòng một xây ký tự ( 0, 1), dòng đầu là X ở dạng biểu</i>


diễn Nhị phân Fibonacci, dòng thứ 2 là Y ở dạng biểu diễn Nhị phân Fibonacci. Độ dài xâu không quá


200.


<i>Kết quả: đa ra file FIB.OUT:</i>


- Dòng đầu: X*Y (dạng biểu diễn Nhị phân Fibonacci),
Dòng thứ 2: X div Y (dạng biểu diễn Nhị phân Fibonacci).
<i> Ví dụ: </i> FIB.INP FIB.OUT


10100 101000001


1010 1


bài tập tin học
ĐHKHTN -1999


<i><b>Bài 1. Cửa sổ văn bản</b></i>


Xột văn bản T gồm N ký tự ( N Ê 1000000, N không cho trớc) và văn bản P
gồm M ký tự ( 0 < M Ê 100). Cửa sổ độ dài W là một đoạn văn bản gồm K ký tự liên
tiếp của T ( M Ê K Ê 1000). Nói cửa sổ W chứa mẫu P, nếu tồn tại một cách xoá một
số ký tự của W để nhận đợc P.


Hai cửa sổ của T gọi là khác nhau, nếu chúng bắt đầu từ những vị trí khác nhau
trong T. Hãy xác định số cửa sổ khác nhau trong văn bản T chứa P.


<i>D÷ liƯu : </i>


- File WINDOWP.INP:


+ dòng đầu chứa 2 số nguyên W M,


+ Dòng thứ 2 chứa M ký tự của văn bản P;
- File WINDOWT.TXT chứa văn bản T.


<i>Kt qu: Đa ra file WINDOW.OUT số nguyên, xác định số lợng cửa sổ tìm </i>
đ-ợc theo u cầu.


VÝ dơ :


WINDOWP.INP WINDOWT.INP WINDOW.OUT


4 2
is


This is sample text
for the first task on
the contest.


8


<i><b>Bài 2. Cửa sổ màn hình đồ hoạ</b></i>


Một màn hình đồ hoạ có kích thớc 300*200, với điểm gốc toạ dộ (0,0) ở góc
trên trái. Hệ thống hoạt động trong chế độ đa nhiệm, hiện đang có N chơng trình hoạt
động, mỗi chơng trình có một cửa sổ riêng của mình. Chơng trình thứ i có cửa sổ xác
định bởi nhóm 4 giá trị nguyên không âm ( X1i, Y1i, X2i, Y2i), trong đó ( X1i, Y1i) là
toạ độ trên trái và (X2i, Y2i) là toạ độ dới phải của cửa sổ ( 0 Ê X1i < X2i < 300, 0Ê
Y1i < Y2i < 200). Các cửa sổ này có thể rời nhau, phủ kín nhau hoặc giao nhau một
phần. Để kích hoạt một chơng trình mới, ngời ta cần khai báo một cửa sổ mới khơng
có điểm chung với các cửa sổ đang có. Hãy xác định toạ độ các đỉnh trên trái và dới
phải của cửa sổ mới sao cho diện tích của cửa sổ này là lớn nhất.



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

- Dòng đầu chứa số nguyên N ( 0 < N £ 100),


- N dòng sau: mỗi dòng chứa 4 số nguyên X1 Y1 X2 Y2, xác định một
cửa sổ.


<i>KÕt qu¶ : ®a ra file GW.OUT:</i>


- Dịng đầu: số ngun S, xác định diện tích cửa sổ tìm đợc. S = 0, nếu khơng
thể tìm đợc cửa sổ đáp ứng u cầu đề ra.


- Trong trờng hợp S > 0, thì dòng thứ 2 chứa 4 số nguyên, xác định cửa sổ tìm
đợc.


VÝ dơ:


GW.INP GW.OUT


2 10000


0 0 149 99 0 99 99 199


100 40 299 199


Rải sỏi

Bài làm đặt tên là STONE.PAS


Xét trò chơi rải sỏi với 1 ngời chơi nh sau:
Cho cây T và một đống sỏi gồm K viên.
Luật đi:



 ở mỗi bớc ngời ta lấy 1 viên sỏi từ đống sỏi cho trớc, đặt vào nút lá tuỳ chọn,
 Nếu nút P có r nút lá và tất cả các nút đó đều đã có sỏi thì ngời ta gom tất cả sỏi ở r


nút lá đó lại, đặt một viên vào nút P, xố tất cả các nút lá của nó và hồn trả r-1 viên
sỏi cịn lại vào đống ban đầu. Nh vậy sau bớc này nút P trở thành nút lá.


 Trò chơi kết thúc khi đặt đợc 1 viên sỏi vào nút gốc.


Yêu cầu, dựa vào cấu trúc của cây T xác định số viên sỏi tối thiểu cần có ban đầu để
trị chơi kết thúc đợc. Cây có N nút ( 0 < N Ê 400), các nút đợc đánh số từ 1 tới N,
nút gốc đợc ỏnh s l 1.


<i>Dữ liệu: vào từ file văn bản STONE.INP:</i>


Dòng đầu: số nguyên N,


Dòng thứ i trong N dòng tiếp theo có dạng:


i m i

1

i

2

. . . i

m

,



trong đó: m - số nút con của nút i, m  0,


i

1

i

2

. . . i

m

-

c¸c nót con cđa nót i.


C¸c sè trên 1 dòng cách nhau ít nhất 1 dấu cách.


<i>Kết quả: đa ra file STONE.OUT số lợng viên sỏi tối thiĨu cÇn thiÕt.</i>
<i>VÝ dơ:</i>


STONE.INP STONE.OUT



7 3


1 2 2 3
2 2 5 4
3 2 6 7
4 0
5 0
6 0
7 0


<i><b>Bài 1. Ngôn ngữ khởi tạo hằng</b></i>


Xét ngôn ngữ tạo hằng nguyên. Ngôn ngữ này chỉ bao gồm 4 chØ thÞ:
- PLUS1 Khëi t¹o h»ng +1,


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

- INC Tăng hằng nhận đợc lên 1.
- DUP Nhân đôi hằng nhận đợc.


Với hằng nguyên cho trớc (trong phạm vi Longint), hãy nêu chơng trình ít câu lệnh nhất tạo hằng ú.


<i>Dữ liệu: vào từ file CONS.INP, mỗi dòng một số nguyên cần tạo.</i>


<i>Kết quả: đa ra file CONS.OUT . Mỗi số nguyên ứng với một chơng trình, Dòng đầu của mỗi chơng </i>


trỡnh l du # sau ú l dấu cách và hằng cần khởi tạo, các dòng tiếp theo là chơng trình, mỗi câu lệnh
trên một dịng. Các chơng trình cách nhau 1 dịng trống.


<i>VÝ dơ: </i> CONS.INP MT.OUT



3 # 3


-5 PLUS1


DUP
INC
# -5
MINUS1
DUP
DUP
INC
DUP
INC


<i><b>Bài 2. Số nhị phân Fibonacci</b></i>


Xét dÃy số Fibonacci F0, F1, F2, F3, . . . ,Fn, . . . víi F0 = F1 = 1.


Một số nguyên dơng X có thể biểu diễn một cách đơn trị dới dạng:
X = iFi,


trong đó i = (0, 1), i*i+1 = 0.


Dãy (1, 2, . . .,n) đợc gọi là dạng biểu diễn Nhị phân Fibonacci của số X.


Cho hai số nguyên X và Y dới dạng Nhị phân Fibonacci ( X Ê Y). HÃy tìm X*Y và X div Y dới dạng
biểu diễn Nhị phân Fibonacci.


<i>Dữ liệu: vào từ file FIB.INP, gồm 2 dòng, mỗi dòng một xây ký tự ( 0, 1), dòng đầu là X ở dạng biểu</i>



diễn Nhị phân Fibonacci, dòng thứ 2 là Y ở dạng biểu diễn Nhị phân Fibonacci. Độ dài xâu không quá
200.


<i>Kết quả: đa ra file FIB.OUT:</i>


- Dòng đầu: X*Y (dạng biểu diễn Nhị phân Fibonacci),
Dòng thứ 2: X div Y (dạng biểu diễn Nhị phân Fibonacci).
<i> Ví dụ: </i> FIB.INP FIB.OUT


10100 101000001


1010 1


<i><b>Bµi 1. Cưa sổ văn bản</b></i>


Xột vn bn T gm N ký tự ( N Ê 1000000, N không cho trớc) và văn bản P
gồm M ký tự ( 0 < M Ê 100). Cửa sổ độ dài W là một đoạn văn bản gồm K ký tự liên
tiếp của T ( M Ê K Ê 1000). Nói cửa sổ W chứa mẫu P, nếu tồn tại một cách xoá một
số ký tự của W để nhận đợc P.


Hai cửa sổ của T gọi là khác nhau, nếu chúng bắt đầu từ những vị trí khác nhau
trong T. Hãy xác định số cửa sổ khác nhau trong văn bản T chứa P.


<i>D÷ liệu : </i>


- File WINDOWP.INP:


+ dòng đầu chứa 2 số nguyên W M,
+ Dòng thứ 2 chứa M ký tự của văn bản P;
- File WINDOWT.TXT chứa văn b¶n T.



<i>Kết quả: Đa ra file WINDOW.OUT số nguyên, xác định số lợng cửa sổ tìm </i>
đ-ợc theo yêu cầu.


VÝ dô :


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

4 2
is


This is sample text
for the first task on
the contest.


8


<i><b>Vßng trßn con</b></i>


Cho 2 dãy số nguyên a1, a2, a3, . . . ,an và b1, b2, b3, . . . bm ( 2 Ê n,m Ê 100)
Các số này đợc xếp quanh 2 vòng tròn A và B: Các số ai - quanh vòng tròn A, các số bj
- quanh vòng tròn B, i = 1,2, . . ., n; j = 1,2, . . ., m. Vịng trịn C với các số quanh nó
c1,c2, . . . ,ck đợc gọi là vòng tròn con của A (hoặc của B), nếu tồn tại một cách xoá bớt
các số của A ( hoặc của B) để nhận đợc C. Hãy tìm vịng trịn C với k là lớn nhất.
<i>Dữ liệu : Vào từ file văn bn CIRCLE.INP:</i>


+ dòng đầu chứa 2 số nguyên n, m, cách nhau ít nhất 1 dấu cách,
+ n dòng tiếp theo : chứa các số ai, mỗi số trên mét dßng, i = 1,2, . . ., n,
+ m dòng tiếp theo : chứa các số bj, mỗi số trên một dòng, j = 1,2, . . ., m.
<i>Kết quả: Đa ra file văn bản CIRCLE.OUT:</i>


+ Dòng đầu chứa số nguyên k,



+ k dòng sau: chứa các số ci, mỗi số trên một dòng, i = 1,2, . . ., k.
VÝ dô:


CIRCLE.INP CIRCLE.OUT


5 4 2


6 8


2 2


8
15
7
9
8
2
10
<i><b>Bµi 1. D·y 0/1.</b></i>


Xuất phát từ số A1 = 1, ngời ta xây dựng dãy bít A2, A3, . . ., AN, . . . theo cách sau:
Dãy Ai+1 nhận đợc từ dãy Ai bằng cách viết tiếp vào sau nó các chữ số nghịch đảo của
Ai .


A1 = 1
A2 = 10
A3 = 1001
A4 = 10010110
. . . .



Cho số nguyên K ( trong phạm vi Longint ) Hãy xác định giá trị bít th K ca AN (vi
N ln


<i>Dữ liệu: vào từ file BIT.INP, mỗi dòng một số nguyên K.</i>


<i>Kt qu: đa ra file BIT.OUT các bít tìm đợc, mỗi bít trờn mt dũng.</i>


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

BIT.INP BIT.OUT
3


6
14


0
1
0


<i><b>Bài 2. Rô bốt th¸m hiĨm</b></i>


Một trong số các dự án khả thi của thiên niên kỷ sau là khai thác các tài nguyên
khoáng sản của các thiên thạch và tiểu hành tinh gần trái đất.Để thám hiểm, khảo sát
các đối tợng này, ngời ta phải chế tạo các rô bốt đơn giản, hoạt động theo chơng trình
cài sẵn hoặc phát đi từ trái đất. Một cơ quan nghiên cứu đã chế tạorô bốt diều khiển
bằng các lệnh: L - rẽ trái (tính theo hớng đang chuyển động), R - rẽ phải (tính theo
h-ớng đang chuyển động), U - tiến thẳng, D - quay lui. Với mỗi lệnh rô bốt di chuyển
một đơn vị khoảng cách. Vùng cần khảo sát đợc kẻ thành lới ô vuông, đợc nhúng vào
hệ toạ độ có các trục song song với cạnh của lới và các nút lới có toạ độ nguyên. Ban
đầu rô bốt đợc đa tới điểm có toạ độ (X0,Y0) và hớng theo chiều song song với một
trục toạ độ. Nhiệm vụ là phải đa rơ bốt rơ bốt tới điểm có toạ độ (X1, Y1) bằng đúng K


lệnh di chuyển. (0 Ê ẵX0 - X1ẵ,ẵY0 - Y1ẵ Ê 16, 0< K Ê 16). Hãy xác định xem tồn tại
bao nhiêu chơng trình khác nhau có thể cài đặt vào bộ nhớ của rô bốt.


<i>Dữ liệu: vào từ file văn bản ROBOT.INP gồm 5 số nguyên K X0 Y0 X1 Y1, các số </i>
đều thuộc phạm vi Integer, cách nhau ít nhất 1 dấu cách.


<i>Kết quả: Đa ra file văn bản ROBOT.OUT một số nguyên xác định số lợng chơng trình </i>
tìm đợc.


<i>VÝ dơ:</i>


ROBOT.INP ROBOT.OUT


3 0 0 1 0 9


<i><b>Bài 3. Tráo bài.</b></i>


Gi thit có 2n lá bài, đánh số từ 1 đến 2n. Ban đầu các lá bài đợc sắp theo thứ tự từ 1
đến 2n. Quy tắc tráo bài là nh sau: sau một lần tráo bài từ trật tự ban đầu ta có trật tự
các bài là n+1, 1, n+2, 2, . . . ,2n, n. Nh vậy, n lá bài đầu tiên sẽ nằm ở các vị trí 2, 4,
6, . . . , 2n. Các lá bài cịn lại sẽ ở các vị trí lẽ: 1, 3, 5, . . ., 2n-1. Với số nguyên n cho
trớc, sau một số lần tráo, ta lại nhận đợc trình tự ban đầu của bộ bài. Hãy lập trình xác
định số lần tráo để có lại trình t ban u.


Dữ liệu: vào từ file SHUFFLE.INP, mỗi dòng 1 số nguyên n ( n < 10000).


Kết quả: đa ra file SHUFFLE.OUT, mỗi dòng một số nguyên - kết quả ứng với dòng
t-ơng ứng của file dữ liệu vµo.


VÝ dơ:



</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

10
20


6
20


<i><b>Bµi 4. L thõa sè häc.</b></i>


Luỹ thừa số học của số M theo chữ số N và ký hiệu là Ar(M,N) là số ít nhất
các chữ số N cần thiết để xây dựng một biểu thức số học nguyên với các phép tính +,
-, * , / và các dấu ngoặc tròn (, ) cho kết quả là M. Ví dụ, Ar(17,3) = 5, vì 3*(3+3)-3/3
= 17, cịn Ar(24,1) = 5, vì (11 + 1)*(1+1) = 24.


Chú ý: các kết quả trung gian phải nguyên và không âm.


<i>Dữ liệu: vào từ file văn bản APOWER.INP, mỗi dòng 2 số nguyên M N (0 £ M < </i>
1000, 1 £ N Ê 9).


<i>Kết quả: đa ra file APOWER.OUT, mỗi dòng một số nguyên - kết quả ứng với dòng </i>
t-ơng ứng của file dữ liệu vào.


<i>Ví dụ:</i>


APOWER.INP APOWER.OUT


17 3
24 1


5


5
<i><b>Bài 5. Băng màu.</b></i>


Cú mt s lng khụng hn chế các hình vng khích thớc đơn vị, mỗi hình vng có
một màu trong số 3 màu xanh ( ký hiệu là B), trắng ( ký hiệu là W) hoặc đỏ( ký hiệu
là R). Với các hình vng này, ngời ta có thể xếp thành một băng màu kích thớc 1*N.
Ví dụ, với N = 6, có th cú bng:


W B B R R B


Từ băng này, ngêi ta x©y dùng ma trËn kỊ :


W B R


W 0 1 0


B 1 1 1


R 0 1 1


PhÇn tư ma trận kề bằng 1 nếu 2 màu tơng ứng là kề nhau trong băng và bằng 0 trong
trờng hợp ngợc lại.


Bng mu ny cng cú th biu din dới dạng xâu độ dài N chỉ chứa các ký tự A, B,
C.


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

Yêu cầu: cho độ dài N của băng, ma trận kề và số nguyên M, hãy tính số lợng các
băng khác nhau có thể có và xác định băng màu thứ M ( các băng đợc đánh s từ 1
trở đi).



<i>D÷ liệu: vào từ file văn bản ABC.INP, dòng đầu chøa 2 sè nguyªn N M ( 1£ N £ </i>
30).


Ba dòng tiếp theo , mỗi dòng chứa 3 số nguyên 0 hoặc xác định ma trận kề theo trình
tự lần lợt là W B R. Các số trên một dịng cách nhau 1 dâíu cách.


<i>KÕt qu¶: ®a ra file ABC.OUT:</i>


 Dòng đầu tiên là tổng số các băng màu có thể có,
 Dịng thứ 2: Xâu N ký tự xác định băng màu tìm đợc.


<i>VÝ dơ:</i>


ABC.INP ABC.OUT


3 2 2


0 1 1 BWR


1 0 0
1 0 0


<i><b>§ỉi tiỊn </b></i>


Nớc Silverland sử dụng hệ thống tiền xu trong đó các xu có mệnh giá là một số chính
phơng: 1, 4, 9, . . ., 289 ( = 172<sub> ). Với hệ thống này, để trả 10 xu ta có 4 cách:</sub>


 Trả 10 đồng 1 xu,


 Trả 1 đồng 4 xu và 6 đồng 1 xu,


 Trả 2 đồng 4 xu và 2 đồng 1 xu,
 Trả 1 đồng 9 xu và 1 đồng 1 xu.


Nhiệm vụ của bạn là xác định xem có bao nhiêu cách tr mt s tin cho trc
Silverland.


<i>Dữ liệu: vào từ file văn bản COIN.INP, gồm nhiều dòng, mỗi dòng một số nguyên </i>
d-ơng không vợt quá 300.


<i>Kết quả: đa ra file văn bản COIN.OUT số cách trả ứng với tõng trêng hỵp.</i>
<i>VÝ dơ:</i>


COIN.INP COIN.OUT


2
10
30


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<i><b>Bảng đèn</b></i>


Cho bảng hình vng, trên đó gắn N*N đèn tạo thành lới ô vuông. Các hàng và cột
đ-ợc đánh số từ 1 đến N từ trên xuốn dới và từ tráI qua phải. Mỗi hàng và mỗi cột có
một cơng tắc bấm. Ký hiệu Ri là công tắc bấm của hàng i và Cj - công tắc bấm của cột
j. Khi bấm vào một công tắc của một hàng ( cột) nào đó thì tất cả các đèn của hàng
(cột ) ấy đổi trạng tháI: từ sáng thành tắt hoặc ngợc lại.


Cho trớc hai trạng thái đầu và cuối của bảng, hãy chỉ cách bấm ít nhất có thể đợc các
nút để chuyển trạng thái của bảng từ trạng thái đầu sang trạng thái cuối hoặc cho biết
khụng tn ti cỏch chuyn.



<i>Dữ liệu: vào từ file văn bản LAMP.INP, dòng đầu là số nguyên N ( 1 < N Ê 50), N </i>
dòng sau mô tả trạng thái đầu của bảng, mỗi dòng N số 0 hoặc 1, 0 ứng với trạng thái
tắt, 1 ứng với trạng thái bật, các số trên một dòng cách nhau ít nhất 1 dấu cách. N
dòng tiếp theo mô tả trạng thái cuối của bảng (theo quy cách nh trªn).


<i>Kết quả: đa ra file LAMP.OUT. Dịng đầu tiên là số nguyên xác định số lần bấm nút. </i>
Nếu không có cách bấm thì dịng này chứa số -1. Các dòng tiếp theo: mỗi dòng ghi
<i>một nút cần bấm, dới dạng R i hoặc C j.</i>


<i>VÝ dô:</i>


LAMP.INP LAMP.OUT


4
0 1 1 0
1 0 0 1
1 0 0 1
0 1 1 0


4
R 1
C 4
C 1
R 4
0 0 0 0


0 0 0 0
0 0 0 0
0 0 0 0



<i><b>Khôi phục ngoặc</b></i>


Cho mt biu thức tốn học có nhiều ngoặc trịn lồng nhau. Biểu thức ban đầu đợc viết
đúng. Ai đó tinh nghịch xố hết các tốn hạng và phép tính, chỉ để lại ngoặc. Một ngời
khác viết dới mỗi ngoặc mở một số nguyên cho biết có bao nhiêu ngoặc ( cả đóng lẫn
mở ) nằm giữ ngoặc mở này và ngoặc đóng tơng ứng của nó. Ví dụ, từ một biểu thức
ta có:


( ( ) ( ( ) ( ) ) ( ( ) ) ( ) )
14 0 4 0 0 2 0 0


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

Dòng đầu số nguyên N - số lợng các số trong dÃy, ( 0 < N Ê 1000),
Các dòng sau: Các số nguyên không âm của d·y.


Kết quả: đa ra file BALANC.OUT chuỗi các ngoặc tìm đợc dới dạng xâu văn bản.
Ví dụ:


BALANC.INP BALANC.OUT


8 ( ( ) ( ( ) ( ) ) ( ( ) ) ( ) )
14 0 4 0 0


2 0 0


<i><b>Phơng trình</b></i>


Kt quả nghiên cứu của một cơng trình khoa học đã cho phép xác định đợc các
hệ số ai của đa thức bậc n: P(x) = a1xn + a2xn-1 + . . . + a1x + an+1 và nghiệm x0 của
ph-ơng trình P(x) = 0 ( 1 Ê n Ê 5, ẵaiẵÊ 1000, ẵx0ẵÊ 10 )



Điều đáng tiếc là khi lập trình ngời ta quên đa ra các dấu cách giữa các giá trị
ai và xo, vì vậy chỉ nhận đợc một xâu gồm các ký tự .


Hãy tìm cách khơi phục lại kết quả dựa vào n và xâu ký tự nhận đợc.
<i>Dữ liệu: vào t file vn bn EQUATION.INP:</i>


Dòng đầu chứa số nguyên n,


Dòng thứ 2: chứa xâu các ký tự số và có thể có ký tự dấu + hoặc -.


<i>Kết quả: đa ra file EQUATION.OUT các giá trị a</i>1, a2, . . ., an+1, x0 , mỗi số
trên 1 dòng.


<i>Ví dụ: </i>


EQUATION.INP EQUATION.OUT


2 1


12-153 2


-15
3


<i><b>Khung nhựa</b></i>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

Khung thứ nhất đợc tạo thành từ n đoạn và các điểm nối của nó có toạ độ:
(x1,y1,z1), (x2,y2,z2), . . . , (xn,yn,zn)


Khung thứ hai đợc tạo thành từ m đoạn và các điểm nối của nó có toạ độ:


(u1,v1,w1), (u2,v2,w2), . . . , (um,vm,wm)


(3Ê n,m Ê 50, các toạ độ là nguyên và nằm trong phạm vi từ -100 đến 100).
Hãy xác định xem có thể tách rời để lấy riêng từngkhung ra mà không cần
phải ca cạnh của một khung nào ú hay khụng.


<i>Dữ liệu: vào từ file văn bản FRAME.INP:</i>


Dòng đầu chứa số nguyên n,


n dòng tiếp theo, mỗi dòng chứa 3 số nguyên xi, yi, zi,


Dòng thứ n+2 chứa số nguyên m,


m dòng tiếp theo, mỗi dòng chứa 3 số nguyên uj, vj, wj.


Dòng thứ 2: chứa xâu các ký tự số và có thĨ cã ký tù dÊu + hc -.


<i>Kết quả: đa ra file FRAME.OUT thông báo YES nếu tách đợc và NO trong </i>
tr-ờng hợp ngợc lại.


<i>VÝ dô: </i>


FRAME.INP FRAME.OUT


3 NO


0 0 0
0 3 0
3 0 0


3
1 1 0
1 -1 1
1 -1 -1


<i><b>Quan hÖ</b></i>


Xét một tập N đối tợng có thể so sánh đợc (N < 100). Giữa 2 đối tợng a và b có thể
tồn tại 1 trong 3 quan hệ phân loại:


a = b a < b b < a
Quan hệ ‘=’ có tính chất đối xứng nên không đợc nêu lại ở trên.


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

c < b < a


Cho số n, hãy xác định số lợng quan hệ phân loại khác nhau.


<i>Dữ liệu: vào từ file văn bản COND.INP, gồm nhiều số nguyên n ( trong phạm </i>
vi từ 2 đến 99), mỗi số trên 1 dòng.


<i>Kết quả: đa ra file COND.OUT các số lợng quan hệ phân loại tìm đợc, mỗi số </i>
trên 1 dịng.


<i>VÝ dơ: </i>


COND.INP COND.OUT


2 2


3 13



<i><b>Trò chơi 3 màu</b></i>


Xột trũ chi mt ngi trên bảng 10*15 ơ. Mỗi ơ của bảng có một quân màu xanh (B),
trắng (W) hoặc đỏ (R). Các quân cùng màu ở những ô kề cạnh tạo thành một miền
cùng màu. Các hàng của bảng đợc đánh số từ 1 đến 10 từ dới lên trên, các cột đợc
đánh số từ 1 đến 15, từ trái sang phải.


Luật chơi là nh sau: ngời chơi chọn một miền đồng màu có số ơ lớn hơn 1, lấy tất cả
các quân trong miền ra khỏi bảng và dồn các quân còn lại theo 2 bớc:


a) Đẩy các qn dọc theo cột xuống ơ trống phía dới cho đến khi chạm biên hoặc
khơng cịn ơ trống;


b) Nếu có cột trống thì tịnh tiến tất cả các cột bên phải sang trái ( giữ nguyên hàng),
lấp vào cét trèng.


Trò chơi kết thúc khi mọi quân đợc lấy ra khỏi bàn cờ hoặc không tồn tại miền đồng
màu diện tích lớn hơn 1 ơ.


Điểm số ban đầu là 0. Mỗi lần ngời chơi chọn miền đồng màu và lấy ra đợc m quân
thì điểm số đợc cộng thêm (m-2)2<sub>.</sub>


Hãy lập trình chỉ ra cách đi để nhận đợc nhiều điểm nhất từ bảng cho trớc.


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<i>Kết quả: đa ra file RBWGAME.OUT, mỗi dòng ứng với 1 nớc đi ( lần chọn vùng). </i>
Dòng thông tin về nớc đi có dạng:


X i j m d,
trong đó: - X - màu của miền,



i, j - toạ độ một ô của vùng đợc chọn,
m - số lợng quân lấy đợc ra khỏi bảng,
d - số điểm nhận đợc ở bớc này.


Dòng cuối cùng của file kết quả chứa 2 số nguyên cho biết tổng số điểm nhận đợc và
số qn cịn lại trong bảng.


<i>VÝ dơ:</i>


RBWGAME.INP RBWGAME.OUT


RRRRRRRRRRRRRRR
RRRRRRRRRRRRRRR
WWWWWWWWWWWWWWW
WWWWWWWWWWWWWWW


BBBBBBBBBBBBBBB
BBBBBBBBBBBBBBB


W 1 1 30 784
R 1 1 30 784
B 1 1 30 784
W 1 1 30 784
R 1 1 30 784
4920 0


RRRRRRRRRRRRRRR
RRRRRRRRRRRRRRR
WWWWWWWWWWWWWWW


WWWWWWWWWWWWWWW


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

Xét file văn bản VB.INP, mỗi dòng của file chứa một từ không quá 75 ký tự
chữ cái thờng trong bảng chữ cái tiếng Anh. Các từ trong file đợc sắp xếp theo thứ tự
từ điển. Dãy các từ đợc gọi là một chuỗi, nếu từ sau hoặc giống từ trớc hoặc có thể
nhận đợc bằng cách bổ sung các ký tự vào cuối từ trớc. Số lợng các từ trong chuỗi
đ-ợc gọi là độ dài của chuỗi.


<i>Ví dụ : Chuỗi từ cú di 6</i>
i


in
int
integer
integers
integers


<i>Yêu cầu: lập trình nhập từ file VB.INP với số lợng từ có thể tớivài trăm nghìn, tìm </i>
chuỗi từ dài nhất trong file.


<i>Kết quả: Đa ra file văn bản VB.OUT:</i>


Dũng u cha di ca chui,


Các dòng sau: mỗi dòng chứa 1 từ của chuỗi. Các từ đa ra theo thứ tự tăng dÇn cđa


độ dài từ.
<i>Ví dụ:</i>


VB.INP VB.OUT



abs 6


an i


i in


in int


ins integer


insert integers


int integers


integer
integers
integers
intel


<i><b>Chỉ thị rẽ nhánh</b></i>


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

kim tra khả năng của chơng trình dịch ngời ta quyết định viết những câu lệnh
phức tạpvà dựa vào thời gian dịch, thời gian thực hiện chơng trình kết quả có thể đánh
giá chất lợng chơng trình dịch.


Gọi các điều kiện là C1, C2, . . ., CN . Với N = 2, có thể viết đợc 2 câu lệnh khác
nhau:


<i> if C1 then if C2 then A1 else A2 else if C2 then A3 else A4;</i>


<i> if C2 then if C1 then A1 else A3 els if C1 then A2 else A4;</i>


Với N cho trớc, hãy xác định xem có thể có bao nhiêu câu lệnh rẽ nhánh khác nhau.
<i>Dữ liệu: vào từ file văn bản COND.INP, gồm nhiều số nguyên N1, N2, . . . Nk, mỗi số </i>
trên 1 dòng.


<i>Kết quả: đa ra file COND.OUT mỗi dịng ghi một số ngun tìm đợc tơng ứng với </i>
các dịng ở dữ liệu vào.


VÝ dơ:


COND.INP COND.OUT


1
2


1
2


<b>b¶ng quảng cáo điện tử</b>


Cú N ( 1 < N ấ 100) bảng quảng cáo, mỗi bảng có dạng hình chữ nhật. Bảng
thứ i đợc xác định toạ độ trên trái ( Xi, Yi) và dới phải (Ui, Vi), các toạ độ đều nguyên,
không âm và không vợt quá 32767. Các bảng quảng cáo đợc hiển thị trên một bảng
thông tin điện tử, lần lợt từ 1 tới N theo chế độ các cửa sổ đè lên nhau, bảng 1 nằm
d-ới, và bảng N nằm trên cùng. Để điều khiển bảng quảng cáo, ngời ta có các lnh sau:


T i - đa bảng i lên trên đầu,
B i - đa bảng i vÒ cuèi,



 U i j - Đa bảng i lên trớc bảng i+j, nếu i + j > N thì phép này tơng đơng với phép


T i,


 D i j- Đa bảng i lxuống sau bảng i - j, nếu i - j Ê 0 thì phép này tơng đơng với


phÐp B i,


 R i - Xoay bảng i một góc 900, theo chiều kim đồng hồ với tâm quay là đỉnh trên


ph¶i,


 C i - tính diện tích phần thấy đợc của bảng i.


Sau mỗi câu lệnh (trừ lệnh C ), dãy các bảng đợc đánh số lại từ dới lên trên từ
1 tới N


Hãy lập trình nhập N, toạ độ các bảng, các lệnh điều khiển, đa ra kết quả thực
hiện các lệnh C, với mỗi lệnh C cần đa ra diện tích phần nhìn thấy đợc và tỷ lệ phần
trăm phn nhỡn thy so vi ton bng.


<i>Dữ liệu: Vào từ file văn bản RECLAM.INP:</i>


Dòng đầu : số nguyên N,


N dòng tiếp theo mỗi dòng 4 số nguyên X Y U V,
Các dòng tiếp theo: mỗi dòng chứa một lệnh điều khiển


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

Ví dô:



RECLAM.INP RECLAM.OUT


3 800 66.67


10 30 40 10
20 20 0 60
0 40 30 0
U 1 2
C 2


Liên lạc vũ trụ


liờn lc vi tu thm dũ tự động ngời ta chuẩn bị danh sách các thông báo, đánh số
từ 1 trở đi và cài vào trong bộ nhớ của máy tính trên trạm thăm dị. Số lợng thông báo
là 1 000 000. Trạm điều khiển mặt đất hoặc tàu thăm dò chỉ cần phát đi số thứ tự thay
vì cho chuyển tồn bộ nội dung thông báo. Thông tin liên lạc đợc chuyển bằng hệ


thống phát sung Laser định hớng. Nhng việc phát xung (tức
là các tín hiệu 1 ). Vì vậy các nhà khoa học quyết định phát
mỗi số ứng với một dãy bít có khơng q 3 số 1. Các dãy bít
có cùng độ dài là 200, đợc sắp xếp lại theo thứ tự tăng dần
của giá trị nhị phân tơng ứng. Số thứ tự của dãy bít trong
danh sách sẽ chính là số nguyên cần gửi.


Hãy lập trình cài vào máy phát chuyển đổi từ giỏ tr s sang
xõu bớt cn phỏt.


Dữ liệu: vào từ file IMPULSE.INP:


Dòng đầu là số lợng thông báo cần phát R ( R Ê 10000),


Các dòng sau chứa các số nguyên dơng ( số thứ tự thông


báo), các số nếu ở trên 1 dòng - cách nhau ít nhất 1 dấu
cách.


Kết quả: Đa rs file IMPULSE.OUT R dòng, mỗi dòng chứa
một xâu bít ứng với số cần phát. Bỏ qua các số 0 trớc số 1 đầu tiên trong xâu, trừ trờng
hợp số cần phát là 1 thì kết quả ra dợc ghi là 0.


VÝ dô:


IMPULSE.INP IMPULSE.OUT


6 0


1 1


2 10


3 11


4 100


5 100000110


100


Läc biÕn


Bảng tra cứu mã trao


đổi thơng tin


<i>( Tut mËt)</i>


Dòng bít Giá trị


. . . 00000 1


. . . 00001 2


. . . 00010 3


. . . 00011 4


. . . 00100 5


. . . 00101 6


. . . 00110 7


. . . .


. . . 001110 15


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

Biểu thức lơgíc nói chung rất phức tạp và nhiều khi tồn tại các biến khơng đóng vai trị
tác động lên giá trị của biểu thức, tức là giá trị của biểu hức có thể khơng phụ thuộc
vào một số biến nào đó, những biến này đợc gọi là biến nhiễu và những biến còn lại là
<i>biến thực. Ví dụ biểu thức (A or not A) and B chỉ phụ thuộc vào B. Trong biểu thức </i>
này A là biến nhiễu, B là biến thực. Hãy lập trình phân tích biểu thức lơ gíc cho trớc,
xác định các biến thực của biểu thức.



Biểu thức chứ không quá 10 biến khác nhau, mỗi biến đợc đặt tên bằng 1 chữ cái in
<i><b>hoa trong phạm vi từ A đến I, có thể chứa các dấu ngoặc trịn ( và ) . Các phép tính là </b></i>


<i><b>not, and, or vµ => (2 ký tù, chØ phÐp ”kÐo theo”).</b></i>


Chó ý:


 <i><b>PhÐp not cã thứ tự u tiên cao nhất, các phép and vµ or cïng møc u tiên và cuối</b></i>


<i><b>cùng là phép =>,</b></i>


<i><b>Biu thc A => B có dạng tơng đơng là not A or B.</b></i>


<i>Dữ liệu: vào từ file BOOL.INP chứa 1 xâu không quá 100 ký tự xác định 1 biểu thức </i>
lơ gíc. Giữa các phép tính và biến có ít nht 1 du cỏch.


<i>Kết quả: đa ra file BOOL.INP 2 dòng : dòng đầu tiên là danh sách các biến nhiễu, </i>
dòng thứ 2 là danh sác các biến thực, tên các biến cách nhau 1 dấu cách. Nếu danh
sách nào rỗng thì đa ra số 0.


<i>Ví dụ:</i>


BOOL.INP BOOL.OUT


( A or not A) and ( B or C) A
B C


Ngêi Hµ lan bay



Những con thuyền lênh đênh trên biển cả không ngời lái, không thuỷ thủ, theo truyền
thống đi biển, đợc gọi là những ngời Hà Lan bay. Sự kiện gặp gỡ Ngời Hà lan bay đợc
ghi nhận trên khắp các đại dơng và trong mọi thời đại. Nguyên nhân xuất hiện Ngời
Hà lan bay có rất nhiều.


Một con tàu nghiên cứu nhỏ của Viện nghiên cứu Đại dơng gặp bão, bị tai nạn. Nhóm
cán bộ nghiên cứu đợc cứu thốt kịp thời. Do thời tiết q xấu nên khơng thể lai kéo
tàu theo và mọi ngời đều cho rằng con tàu nghiên cứu sẽ bị nhanh chóng bị chìm.
Nh-ng thật đáNh-ng Nh-ngạc nhiên, sau một thời gian Nh-ngời ta phát hiện ra nhữNh-ng thôNh-ng tin cho
thấy tàu vẫn còn nỗi và đang chạy theo chế độ lập trình tự động với tốc độ khơng đổi,
chỉ có điều là khơng biết chơng trình nào và cụ thể nó đang ở đâu. Các thơng tin từ các
tàu thơng mại, các trạm quan sát và từ vệ tinh cho phép cục bộ hoá tại thời điểm t
trong lới ô vuông toạ độ đỉnh trên trái (x,y) và dới phải ( u,v) có hoăch khơng có con
tàu quý giá trên. Hãy xử lý thông tin nhận đợc để dự báo xem tại thời điểm T ( T > t)
tàu sẽ ở đâu, biết rằng chơng trình điều khiển tàu khá đơn giản và đợc thực hiện lặp vơ
hạn lần, một chu trình điều khiển khơng q 4 đơn vị thời gian. Khoảng thời gian giữa
2 lần đổi hớng là nguyên, mỗi lần đổi hớng tàu có thể quay 450<sub> hoặc 90</sub>0<sub> sang phải hay</sub>
trái theo hớng i.


<i>Dữ liệu: vào từ file văn bản FLYH.INP:</i>


Dòng đầu gåm 2 sè nguyªn N T, N £ 100, T nguyên dơng,


Dòng thứ i trong N dòng tiÕp theo: chøa 6 sè nguyªn ti, xi yi ui vi ri,


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<i>Kết quả: Đa ra file FLYH.OUT toạ độ tàu ở tời điểm T hoặc thông báo NOT FOUND </i>
nếu thông tin khơng đủ để xác định xác định đợc vị trí của tàu.


<i>VÝ dô:</i>



FLYH.INP FLYH.OUT


11 10 12 10


1 1 5 3 1 1
1 3 7 4 5 1
2 2 5 6 3 0
2 3 7 4 5 1
2 4 10 8 6 1
3 1 10 8 6 1
3 4 10 6 1 1
4 6 10 6 1 1
4 6 6 8 4 0
5 6 10 10 7 1
5 3 9 7 8 0


Dãy số đặc biệt


XÐt tËp c¸c d·y N số nguyên dơng không giảm ( N Ê 20),mỗi dÃy số thoả mÃn 2 điều
kiện:


Tng 2 s u của dãy lớn hơn V cho trớc,
 Tổng tất cả các số trong dãy đúng bằng N2.


Các dãy số của tập có thể sắp xếp theo thứ tự từ điển và đánh số từ 1 trở đi.
Ví dụ, với N = 3 và V = 3 ta có 5 dãy:


<i>1 </i> 1 3 5
<i>2</i> 1 4 4
<i>3</i> 2 2 5


<i>4</i> 2 3 4
<i>5</i> 3 3 3


Với N và V cho trớc, hãy xác định số lợng dãy trong tập và xác định dãy theo số thứ tự
từ điển K của nú.


<i>Dữ liệu: vào từ file văn bản SET.INP:</i>


Dòng đầu: 2 số nguyên N V,


Các dòng sau: mỗi dòng một số nguyên K.


<i>Kết quả: đa ra file SET.OUT:</i>


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

Các dòng sau: mỗi dòng một dÃy ứng với K tờn ứng ở dữ liệu vào, các số trên 1


dòng cách nhau 1 dấu cách.
<i>Ví dụ:</i>


SET.INP SET.OUT


3 3
2
4


5
1 4 4
2 3 4


Bảo tồn di sản văn hoá



bo tồn di sản văn hoá dân tộc Bộ Văn hoá đã tổ chức các đồn cơng tác đi tới các
vùng sâu , các lễ hội địa phơng đặc biệt là các vùng đồng bào dâ tộc ít ngời ghi âm và
thu hình các bài dân ca, các điệu múa, các nghi lễ văn hố . . . Thơng tin thu đợc sẽ
đ-ợc ghi lên các đĩa CD ROM để bảo quản lâu dài. Mỗi băng hình hoặc tiếng đđ-ợc ghi
thành 1 file riêng trên đĩa. Để thuận tiện lu trữ và quản lý, ngời ta cố gắng sử dụng
càng ít đĩa càng tốt. Ngồi ra, một đĩa có thể chứa nhiều files, nhng mỗi file thu về
phải nằm gọn trên một đĩa. Mỗi đĩa CD ROM có dung lợng 640MB. May mắn là
khơng có file ban đầu nào có kích thớc vợt q 640MB.


Hãy lập trình xác định số đĩa tối thiểu và cách ghi ( những files nào ghi trên cùng 1
a).


<i>Dữ liệu: Vào từ file văn bản FOLKLOR.INP:</i>


Dòng đầu tiên là số lợng files cần lu trữ N, ( N £ 200),


 Dßng thø i trong N dßng tiếp theo chứa số nguyên dơng Li - kích thớc file thứ i


theo n v KB.


<i>Kết quả: đa ra file văn bản FOLKLOR.OUT:</i>


Dũng u cha s nguyờn K - số đĩa tối thiểu cần dùng,


 Dòng thứ j trong K dòng sau chứa các số nguyên Mj ij1 ij2 . . . ijMj cho biết trên đĩa
thứ j có Mj files và chứa các files ij1 ij2 . . . ijMj.


<i>VÝ dô:</i>



FOLKLOR.INP FOLKLOR.OUT


5
409600
153600


2


3 1 2 4
2 3 5
512000


81920
102400


bài kiểm tra tin học
<b>ĐHSF - 2/1999</b>
Thời gian: 180 phút


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<i><b>Bµi I. Chun bi</b></i>


Cậu bé vẽ N ( N Ê 100) vòng tròn, đánh số từ 1 tới N và tơ mầu các vịng trịn đó ( có thể có
các vịng trịn có màu giống nhau), sau đó nối từng cặp lại bằng các cung định hớng, mỗi cung có một
mầu nhất định. Các màu ( của cung và của vòng tròn ) đợc đánh số từ 1 đến 100.


Cậu bé chọn 3 số nguyên khác nhau L, K và Q nằm trong phạm vi từ 1 tới N, đặt vào trong các
vòng tròn số L và K mỗi vịng một hịn bi, sau đó bắt đầu di chuyển bi theo quy tắc sau:


- Bi chỉ đợc chuyển theo cung có màu trùng với màu của vòng tròn chứa viên bi thứ 2,
- Bi chỉ đợc chuyển theo chiều cung,



- Hai viên bi không đợc đồng thời ở cùng một vịng trịn,
- Khơng nhất thiết phải di chuyn ln lt cỏc viờn bi,


- Quá trình di chun kÕt thóc, khi mét trong hai viªn bi tíi vßng trßn Q.


Hãy lập trình xác định cách di chuyển để chấm dứt q trình sau một số ít nhất cỏc bc chuyn.
<i>D liu: vo t file BI.INP:</i>


- Dòng đầu: 4 sè nguyªn N L K Q,


- Dòng thứ 2: N số nguyên C1, C2, . . . , CN, Ci là màu vòng tròn i,


- Dòng thø 3: sè nguyªn M ( 0 £ M £ 10 000),


M dòng sau: mỗi dòng 3 số nguyên Ai Bi Di , xác định cung màu Di đi từ vòng tròn Ai tới vòng tròn Bi .


Các số trên một dòng các nhau một dấu cách.
<i>Kết quả: đa ra file BI.OUT:</i>


- Dũng u: CO hoc KHONG, cho biết q trình có kết thúc đợc hay khơng,
- Nếu dịng đầu là CO thì dịng 2 chứa số nguyên xác định số bớc chuyển tối thiểu.
Ví dụ:


BI.INP BI.OUT


5 3 4 1 CO


2 3 2 1 4 3



8
2 1 2
4 1 5
4 5 2
5 1 3
3 2 2
2 3 4
5 3 1
3 5 1


<i><b>Bµi 2. Tỉng nguyªn tè</b></i>


XÐt d·y sè nguyªn 1, 2, 3, . . . , N ( 2 £ N £ 10 000). HÃy phân nhóm các số của dÃy sao cho số nhóm là
ít nhất và tổng các số trong nhóm là một số nguyên tố. Chú ý: 1 không phải là số nguyên tố.


<i>Ví dụ: Với N = 8, ta cã thĨ chia thµnh 2 nhãm: nhãm mét gåm2 và 5, nhóm hai gồm các số còn lại.</i>
<i>Dữ liệu: vào từ file BL2.INP chứa số nguyên N.</i>


<i>Kết quả: đa ra file BL2.OUT N số nguyên, mỗi số trên 1 dßng, dßng thø i cho biÕt sè i thuéc nhãm nào.</i>
<i>Ví dụ: Bl2.INP</i> BL2.OUT


8 2
1
2
2
1
2
2
2




bài kiểm tra tin học
<b>ĐHSF - 2/1999</b>
Thêi gian: 180 phót







<i><b>Bµi I. Chun bi</b></i>


Cậu bé vẽ N ( N Ê 100) vòng tròn, đánh số từ 1 tới N và tô mầu các vịng trịn đó ( có thể có
các vịng trịn có màu giống nhau), sau đó nối từng cặp lại bằng các cung định hớng, mỗi cung có một
mầu nhất định. Các màu ( của cung và của vòng tròn ) đợc đánh số từ 1 đến 100.


Cậu bé chọn 3 số nguyên khác nhau L, K và Q nằm trong phạm vi từ 1 tới N, đặt vào trong các
vòng tròn số L và K mỗi vòng một hịn bi, sau đó bắt đầu di chuyển bi theo quy tắc sau:


- Bi chỉ đợc chuyển theo cung có màu trùng với màu của vòng tròn chứa viên bi thứ 2,
- Bi chỉ đợc chuyển theo chiều cung,


- Hai viên bi khơng đợc đồng thời ở cùng một vịng trịn,
- Khơng nhất thiết phải di chuyển lần lợt các viờn bi,


- Quá trình di chuyển kết thúc, khi một trong hai viên bi tới vòng tròn Q.


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

- Dòng đầu: 4 số nguyên N L K Q,


- Dòng thứ 2: N số nguyên C1, C2, . . . , CN, Ci là màu vòng tròn i,


- Dòng thứ 3: số nguyên M ( 0 £ M £ 10 000),



M dòng sau: mỗi dòng 3 số nguyên Ai Bi Di , xác định cung màu Di đi từ vòng tròn Ai tới vũng trũn Bi .


Các số trên một dòng các nhau một dấu cách.
<i>Kết quả: đa ra file BI.OUT:</i>


- Dũng u: CO hoặc KHONG, cho biết q trình có kết thúc đợc hay khơng,
- Nếu dịng đầu là CO thì dịng 2 chứa số nguyên xác định số bớc chuyển tối thiểu.
Ví dụ:


BI.INP BI.OUT


5 3 4 1 CO


2 3 2 1 4 3


8
2 1 2
4 1 5
4 5 2
5 1 3
3 2 2
2 3 4
5 3 1
3 5 1


<i><b>Bài 2. Tổng nguyên tố</b></i>


Xét dÃy số nguyên 1, 2, 3, . . . , N ( 2 Ê N Ê 10 000). HÃy phân nhóm các số cđa d·y sao cho sè nhãm lµ
Ýt nhÊt vµ tỉng các số trong nhóm là một số nguyên tố. Chú ý: 1 không phải là số nguyên tố.



<i>Ví dụ: Với N = 8, ta cã thĨ chia thµnh 2 nhãm: nhóm một gồm2 và 5, nhóm hai gồm các số còn lại.</i>
<i>Dữ liệu: vào từ file BL2.INP chứa số nguyên N.</i>


<i>Kết quả: đa ra file BL2.OUT N số nguyên, mỗi số trên 1 dòng, dòng thứ i cho biết số i thc nhãm nµo.</i>
<i>VÝ dơ: Bl2.INP</i> BL2.OUT


8 2
1
2
2
1
2
2
2





<b>Đề thi chọn đội tuyển tin học</b>
ĐHSF - 1998


Thêi gian: 180 phót





<i><b>Bài 3. Chuẩn hoá số</b></i>


Cho mt s nguyờn dơng S ở hệ 10, có N chữ số ( N < 21). Số S đợc gọi là ở dạng
chuẩn, nếu thoả mãn các điều kiện sau:


- Kh«ng chia hÕt cho3,
- Không chia hết cho7,



- Không chứa số 3 và số 7 trong dạng biểu diễn ở hệ 10,
- Không chứa dÃy liên tiếp 3 chữ số hoặc 7 chữ số giống nhau.
Ví dụ: Các số ở dạng chuẩn: 22, 190


Các số không ở dạng chuẩn: 31, 76, 12224, 411111110
Để chuẩn hoá một số, có các phép biến đổi sau:


A) Chia cho 3, nếu số đó chia hết 3;
B) Chia cho 7, nếu số ú chia ht 7;


C) Xoá chữ số 3 ( và xoá luôn các chữ số 0 vô nghĩa ở đầu), nếu có;
D) Xoá chữ số 7 ( và xoá luôn các chữ số 0 vô nghĩa ở đầu), nếu có;


E) Xoá nhóm 3 chữ số giống nhau bất kỳ (và xoá luôn các chữ số 0 vô nghĩa ở
đầu), nếu có;


F) Xoá nhóm 7 chữ số giống nhau bất kỳ (và xoá luôn các chữ số 0 vô nghĩa ở
đầu), nÕu cã.


Nếu tất cả các chữ số đều bị xoá thỡ coi l nhn c s 0.


Các quy tắc nói trên có thể áp dụng theo trình tự bất kỳ và nhiều lần.


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

hoỏ nhn đợc số chuẩn hoá lớn nhất.


<i>Dữ liệu: vào từ file TEXT BL3.INP, gồm một xâu độ dài N biễu diễnsố S ở hệ 10.</i>
<i>Kết quả: Đa ra file BL3.OUT, gồm 2 dịng:</i>


- Dịng đầu: số chuẩn hố lớn nhất tìm đợc,



- Dịng thứ 2: Xâu các ký tự trong phạm vi từ A đến F, xác định phép biến đổi
theo


tr×nh tù ¸p dơng.


<i>VÝ dơ: BL3.INP </i> BL3.OUT


999 11


ACA
<i><b>Bµi 4. KiĨm tra ngc</b></i>


Cho biểu thức khơng q 10 000 ký tự, trong đó có sử dụng các cặp ngoặc:
( )


[ ]
{ }


(* *) ( chó ý: hai ký tù viÕt liỊn nhau và coi là một dấu ngoặc).


Gia hai du ngoc có thể có ký tự bất kỳ. Các cặp ngoặc (mở đóng tơng ứng)
hoặc rời nhau, hoặc lồng nhau. Ví dụ X là một biểu thức đúng thì biểu thức (X) hoặc
{X}, hoặc X() cũng là những biểu thức đúng.


Biểu thức đúng: ( ( a)[*** ]{})
Biểu thức sai: (()(*(*)


Với biểu thức cho trớc hãy xác định xem nó đúng hay sai và nếu sai thì bắt
đầu sai t ký t th my.



<i>Dữ liệu: vào từ file TEXT BL4.INP, chøa c¸c ký tù cđa biĨu thøc cÇn kiĨm</i>
tra.


<i>Kết quả: Đa ra file BL4.OUT xâu 'DUNG' hoặc 'SAI', trong trờng hợp sai thì</i>
sau đó là số ngun xác định vị trí đầu tiên chứa lỗi.


<i>VÝ dơ 1: BL4.INP</i> BL4.OUT


((){}[aaa]) DUNG


<i>VÝ dô 2: BL4.INP</i> BL4.OUT


(()[b+](*(+ *)) SAI 13


tæng luü thõa



Một học sinh say mê tin học nhận thấy rằng tổng
SK(N) = 1K + 2K + 3K + . . . + NK (1)
có cơng thức rất đẹp với K = 1 và 2. Ví dụ, với K = 2 có
Với K = 3 vấn đề cũng tỏ ra rất hấp dẫn:


13<sub> = 1</sub>2
13<sub> + 2</sub>3<sub> = 3</sub>2
13<sub> + 2</sub>3<sub> + 3</sub>3<sub> = 6</sub>2
13<sub> + 2</sub>3<sub> + 3</sub>3<sub> + 4</sub>3<sub> = 10</sub>2
. . . .


Nh vậy có thể thay thế việc tính tổng các luý thừa iK<sub> tốn nhiều thời gian bằng việc tính</sub>
giá trị một đa thức bậc K+1 đợc hay khơng? Nói một cách khác, có tồn tại dạng biểu


diễn:


trong đó Ai và M - nguyên.


Kết quả khảo sát cho thấy công thức trên quả thật tồn tại. Đáng tiếc, do sơ ý, hệ thống
bị nhiễm vi rút và th mục chứa chơng trình bị hỏng, khơng truy nhập đợc. Bạn hãy lập
trình giúp em học sinh khơi phục lại việc tính các hệ số của công thức biểu diễn dạng
(2) với M nguyên dng nh nht cú th.


<i>Dữ liệu: vào từ file văn bản SUM.INP, gồm nhiều dòng, mỗi dòng chứ một sè nguyªn</i>
K (1 £ K £ 20).


S2(N) = <i>N (N +1)(2 N +1)</i>


6


<i>S<sub>K</sub></i>(<i>N )= </i> 1


<i>M</i>(<i>AK +1N</i>
<i>K</i>


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<i>Kết quả: đa ra file văn bản SUM.OUT, mỗi dòng của file này ứng với 1 dòng của file</i>
dữ liệu vào, chứa K+3 số nguyªn M AK+1 AK AK-1 . . . A1 A0, c¸c sè c¸ch nhau Ýt
nhÊt 1 dÊu c¸ch.


VÝ dơ:


SUM.INP SUM.OUT


1



2 36 2 3 1 01 1 0


Bài tập tin học
ĐHKHTN - 11/1998


<i>Thời gian: 180 phót</i>





Có N phịng ( N Ê mỗi phòng đợc sơn một trong số các mầu ký hiệu
bằng một chữ cái A,B,C,D,E,F,G,H,I,Jvà M ô tô mát ( M Ê 30 ), mỗi ơ tơ mát có
một danh sách các phịng mà nó phục vụ. Ơ tơ mát sẽ nhận biết mầu hiện tại của
phòng và sơn lại phòng thành màu tiếp theo trong danh sách màu nêu trên, nếu phịng
có màu J thì nó đợc sơn thành màu A. Trình tự phục vụ các phịng tiến hành theo đúng
trình tự nêu trong danh sách phục vụ. Một ơ tơ mát, khi đợc kích hoạt sẽ lần lợt sơn
hết các phịng mà nó phải phục vụ. Thời gian sơn một phịng là nh nhau với mọi ơ tơ
mát và với mọi phịng, đợc tính là 1 đơn vị thời gian. Thời gian chuyển phịng coi là
khơng đáng kể. Hãy nêu trình tự kích hoạt ơ tơ mát sao cho sau khoảng thời gian ngắn
nhất có thể, chuyển các phòng từ màu ban đầu sang màu chỉ định cuối. Nếu 2 ơ tơ mát
cùng tới sơn một phịng nào đó thì u tiên ơ tơ mát có số hiệu nhỏ hơn làm trớc, ô tô
mát kia chờ đợi. Tại một thời điểm có thể kích hoạt đồng thời nhiu ụ tụ mỏt.


<i>Dữ liệu: vào từ file AUTOMAT.INP:</i>
- Dòng đầu: M,


- Dòng thứ 2: Xâu N ký tự chỉ màu ban đầu của các phòng,
- Dòng thứ 3: Xâu N ký tự chỉ màu cuối của các phòng,


- M dịng tiếp theo: mỗi dịng một dãy khơng q N số ngun xác định danh
sách (và trình tự) ơ tơ mát phục vụ, dịng thứ i trong nhóm ứng vi ụ tụ mỏt th i.



<i>Kết quả: đa ra file AUTOMAT.OUT:</i>


- Dòng đầu: tổng thời cần chờ đợi để các phòng đợc sơn thành màu chỉ định.
Dòng này chứa số -1 nếu vơ nghiệm.


- Các dịng sau: dãy số ngun kết thúc bằng số 0: Ti K1 K2 . . . Kp 0 , trong đó
Ti - thời điểm kích hoạt, Kj - ơ tơ mát cần kích hoạt.


C¸c dòng đa ra theo thứ tự tăng dần của Ti.
- Kết thúc là dòng chứa một số 0.


<i>Ví dụ:</i>


AUTOMAT.INP AUTOMAT.OUT


3 5


ABCD 1 2 0


BDFG 2 1 4 0


1 2 3 0


4 3
4 3 2 1


Cân bằng


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<i>Dữ liệu: Vào từ file văn bản EQUAL.INP:</i>


Dòng đầu tiên chứa số nguyên N,


Các dòng sau: chứa các số nguyên trong dÃy, mỗi dòng có thể chứa nhiều số, các số
trên 1 dòng cách nhau 1 dấu cách.


<i>Kết quả: Đa ra file EQUAL.OUT:</i>
Dòng đầu tiên ghi số lợng dÃy con,


Các dòng tiếp theo: mỗi dòng ứng với 1 dÃy con, ghi c¸c sè trong d·y.
<i>VÝ dơ: </i>


EQUAL.INP EQUAL.OUT


4


1 2 3 4 21 4
2 3


<i><b>Đề thi chọn đội tuyển Hà nội dự thi</b></i>


<i><b>Héi thi Tin häc trẻ không chuyên toàn quốc 1998</b></i>


<b>Khối C: Phổ thông trung học</b>

<i><b>Thời gian: 120 phút</b></i>



<i><b>Bài 1.</b></i> Bài toán gặp gỡ <i><b><sub>Tên file chơng trình: BL1.PAS </sub></b></i>


Trờn mt li ụ vuụng kớch thớc NN ngời ta đặt hai rôbốt A và B. Rơbốt A đợc đặt tại
góc trên bên trái, cịn rơbốt B đợc đặt tại ơ ở góc dới bên phải của lới. Mỗi ô của lới
hoặc là chứa số 0 hoặc là chứa số 1. Tại mỗi bớc, mỗi rơbốt chỉ có thể di chuyển lên


trên, xuống dới, sang trái, sang phải (không đợc di chuyển theo đờng chéo) ở những ô
chứa số 1. Hai rôbốt sẽ gặp nhau nếu chúng đứng trong cùng một ô. Hai rôbốt bắt đầu
di chuyển đồng thời, và mỗi lợt cả hai rôbốt đều phải thực hiện việc di chuyển (nghĩa
là không cho phép một rôbốt dừng tại một ơ nào đó trong khi rơbốt kia thực hiện bớc
di chuyển).


<b>Yêu cầu: Tìm số bớc di chuyển ít nhất mà hai rơbốt phải thực hiện để có thể gặp</b>
nhau.


<b>Chú ý: Phụ thuộc vào lới đã cho, hai rơbốt có thể khơng khi nào gặp đợc nhau.</b>
<b>Dữ liệu vào: File văn bản BL1.INP có cấu trúc nh sau:</b>


Dòng đầu tiên chứa số N ( N Ê 20).


 Dòng thứ i trong số N dòng tiếp theo chứa N số (mỗi số là 0 hoặc 1) đợc
ghi cách nhau bởi dấu cách là các số ghi trong các ơ của hàng thứ i của lới
(i=1,2,...,N).


<b>KÕt qu¶: Ghi ra file văn bản BL1.OUT nh sau:</b>


Dũng u tiên ghi số K là số bớc di chuyển tìm đợc; (qui ớc K=-1 nếu hai
rôbốt không thể gặp nhau);


 Trong trờng hợp tìm đợc cách di chuyển để hai rơbốt có thể gặp nhau, hai
dịng tiếp theo đợc dùng để mơ tả cách di chuyển của hai rơbốt, dịng đầu
tiên ghi cách di chuyển của rơbốt A cịn dịng thứ hai ghi cách di chuyển
của rôbốt B. Cách di chuyển của rôbốt đợc biểu diễn bởi một dãy các ký tự
mỗi ký tự chỉ có thể là một trong 4 chữ cái T(di chuyển lên trên), B(di
chuyển xuống dới), L(di chuyển sang trái), R (di chuyển sang phải) thể
hiện đờng đi của rôbốt



VÝ dô:


BL1.INP BL1.INP


5


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


6


</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

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


BL1.OUT BL1.OUT


-1 5


DDDDD
LLLLL


<b>Bài 2. Chia dừa</b> <i><b>Tên file chơng trình:</b></i><b> BL2.PAS</b>


Mt tàu có N tên cớp biển và một con khỉ ghé vào một hịn đảo hoang vùng Caribê.
Trên đảo có rất nhiều dừa. Đám cớp hái đợc một đống dừa và cho con khỉ đứng canh
giữ, còn tất cả đi ngủ. Nữa đêm, một tên cớp thức dậy, đến đống dừa, ném cho con khỉ
một quả, cịn lại thì chia đều thành N phần và giấu riêng cho mình một phần. Lát sau,


tên thứ 2 thức dậy, cũng đến bên đống dừa, ném cho con khỉ một quả, còn lại thì chia
đều thành N phần và giấu riêng cho mình một phần. Lần lợt các tên thứ 3, thứ 4, ...,
cho đến tên cuối cùng cũng làm nh vậy. Đến sáng, cả nhóm họp lại, ném cho con khỉ
một quả, còn lại chia đều thành N phần và mỗi tên lấy một phần. Tất cả các lần chia,
số dừa đều chia hết cho N.


Hãy xác định tối thiểu mỗi tên cớp đợc bao nhiêu dừa và tổng số dừa bọn cp
hỏi c l bao nhiờu?


<b>Dữ liệu: Vào từ file văn bản BL2.INP, chúa số nguyên N (N Ê 12).</b>


<b>Kt qu: Ghi ra file văn bản BL2.OUT gồm N+1 dòng: dòng thứ i trong N dòng đầu</b>
chứa số dừa của tên cớp thứ i, dòng cuối cùng chứa tổng số dừa bọn cớp hái đợc.
<b>Ví dụ:</b>


<b>BL2.INP</b> <b>BL2.OUT</b>


5 4147


</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

<i><b>Đề thi chọn đội tuyển Hà nội dự thi</b></i>


<i><b>Héi thi Tin học trẻ không chuyên toàn quốc 1998</b></i>


<b>Khối C: Phổ thông trung học</b>

<i><b>Thời gian: 120 phút</b></i>



<i><b>Bài 1.</b></i> WEBS <i><b><sub>Tên file chơng tr×nh: BL1.PAS</sub></b></i>


Trong World Wide Web, mỗi trang có thể chứa những móc nối dạng siêu văn bản cho
phép bạn có thể di chuyển sang các trang khác. Một trong những câu hỏi của ngời xây


dựng các trang này là: Từ một trang nào đó (gọi là trang gốc) bạn cần xác định xem có
thể thâm nhập đến những trang nào bằng cách lần theo các móc nối có th cú trong
cỏc trang.


<b>Dữ liệu: Vào từ File văn bản BL1.INP </b>


Dũng u tiờn ghi s nguyờn dơng N là số lợng trang WEB. Các trang
WEB sẽ đợc đánh số từ 1 đến N. (N Ê100).


 Dßng tiếp theo ghi số nguyên dơng S là chỉ số cđa trang gèc.


 Dịng thứ i trong số N dịng tiếp theo chứa các chỉ số của các trang mà sử
dụng móc nối có trong trang i ta có thể thâm nhập đến đợc, các chỉ số là
các số nguyên trong phạm vi từ 1 đến N đợc ghi cách nhau bởi dấu cách.
(Qui ớc: Để dòng rỗng nếu từ trang đang xét khơng có móc nối).


<b>KÕt qu¶: Ghi ra file BL1.OUT</b>


Dòng đầu tiên ghi K là số lợng các trang có thể thâm nhập từ trang gốc.
Dòng tiếp theo chứa K chỉ số của các trang cã thĨ th©m nhËp tõ trang gèc.
<b>VÝ dơ: </b>


<b>BL1.INP</b>


<b>BL1.OUT</b>



4
1
2
4 1


1 2 4
2


3
1 2 4


<b>Bài 2. Gơng thần</b> <i><b>Tên file chơng trình:</b></i><b> BL2.PAS</b>
Hồng hậu dì ghẻ độc ác hỏi gơng thần của mình:


<i>“Gơng kia ngự ở trên tờng</i>
<i>Thế gian ai đẹp đợc dờng nh ta?”</i>
Gơng thần trả lời:


<i>“ Xa kia bà đẹp nhất trần</i>


<i>Ngày nay Bạch Tuyết muôn phần đẹp hơn.</i>
<i>Nhà nng khut nỳi non </i>


<i>Tại nhà của bảy chú lùn xa xa. </i>


</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

Dựa vào năm tra cứu và tên của Hoàng hậu, đa ra một trong 3 câu trả lời sau,
phụ thuộc vào hoàn cảnh cơ thĨ:


- "Tâu Hồng hậu, khơng có ai sánh đợc với Lệnh bà!"
- "Xa kia bà đẹp nhất trần,


Ngày nay . . . muôn phần đẹp hơn!" ( ở vào vị trí ' . . .' là tên ngời đẹp
nhất),


- "Tất cả mọi ngời đều đã mất, khơng cịn ai cả!"


<b>Dữ liệu: Vào từ file văn bản GUONG.INP:</b>


 Dßng đầu tiên: số nguyên cho biết năm tra cứu,
Dòng thứ 2: tên Hoàng hậu;


Dũng th 3: s nguyờn N - số ngời trong danh sách ngời đẹp (N Ê 1000),
 Tiếp theo là nhóm N cặp 2 dũng:


+ Dòng đầu trong nhóm thứ i chứa tên ngời thứ i,


+ Dòng thứ 2 trong nhóm chứa các số nguyên si, di, ai, bi, các số cách
nhau ít nhất một dấu cách.


Tên Hoàng hậu và mọi ngời: xâu không quá 12 ký tự.


<b>Kt quả: Ghi ra file văn bản GUONG.OUT câu trả lời có một trong ba dạng đã nêu </b>
(cho phép dùng tiếng Việt không dấu).


<b>VÝ dô:</b>


<b>GUONG.INP</b> <b>GUONG.OUT</b>


1655 " Xua kia ba dep nhat tran,


Lida Ngay nay Bach Tuyet muon phan dep hon!"


4
Anna


1640 5 15 20


Lida


1630 6 25 30
Bach Tuyet
1639 16 30 40
Terri


1941 10 20 25


<i><b>Đề thi chọn đội tuyển H ni d thi</b></i>


<i><b>Hội thi Tin học trẻ không chuyên toàn quốc 1998</b></i>


<b>Khối B: Trung học cơ sở</b>

<i><b>Thời gian: 120 phút</b></i>



<b>Bài 1. DOS</b>


HÃy xây dựng file CONFIG.SYS cho phép khi nạp DOS có thể chọn một trong 3 cấu
hình:


</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>

c) PAS,


Cấu hình AVR đảm bảo chế độ có bộ nhớ cơ sở lớn nhất để thực hiện các
ch-ơng trình cần nhiều bộ nhớ vùng thấp.


Cấu hình WIN địi hỏi phải thực hiện chế độ sử dụng chung file và tăng tốc độ
trao đổi vào ra.


Chế độ PAS đòi hỏi tạo bộ nhớ ảo 2 Mb ở vùng bộ nhớ mở rộng.


Chế độ mặc định là PAS với thời gian chờ đợi 3 giây.


KÕt quả ghi ra file với tên là CONFIG.OPT.


<b>Bi 2. Kim đồng hồ</b> <i><b>Tên file chơng trình:</b></i><b> DONGHO.PAS</b>
Chuyển động của các kim đồng hồ thật là lý thú. Kim giây quay đợc một vòng tròn
(360 độ) sau một phút, kim phút quay đợc một vòng tròn (360 độ) sau một giờ, kim
giờ quay đợc một vòng tròn (360 độ) sau 12 giờ. Em cần lập chơng trình tính góc quay
của các kim đồng hồ và góc nhỏ nhất giữa kim giờ và kim phút tại thời điểm cho trớc.
<b>Đầu vào: Chơng trình cần nhập từ bàn phím thơng tin về thời điểm cần tính bao gồm:</b>
giờ (số nguyên trong khoảng từ 1 đến 12), phút và giây (các số nguyên trong khoảng
từ 1 đến 60). Chơng trình chỉ đợc kết thúc hoạt động khi ngời sử dụng nhập vào giá trị
của giờ là 0.


<b>Đầu ra: Với mỗi thời điểm nhập vào, chơng trình cần đa ra màn hình các giá trị góc</b>
tính đợc với đơn vị đo góc là độ (giá trị góc nằm trong khoảng từ 0.0 đến 360.0).
Khn dạng vào-ra đợc minh hoạ trên ví dụ dới đây.


<b>VÝ dô:</b>


Hay cho thoi diem can tÝnh:
Gio : 6
Phut: 0
Giay: 0
Ket qua:


Kim gio : 180.00
Kim phut: 0.00
Kim giay: 0.00



Goc giua kim gio va phut: 180
Hay cho thoi diem can tÝnh:


Gio : 8
Phut: 30
Giay: 0
Ket qua:


Kim gio : 255.00
Kim phut: 180.00
Kim giay: 0.00


Goc giua kim gio va phut: 75.00
Hay cho thoi diem can tÝnh:


Gio : 10
Phut: 17
Giay: 55
Ket qua:


Kim gio : 308.96
Kim phut: 107.50
Kim giay: 330.00


Goc giua kim gio va phut: 158.54
Hay cho thoi diem can tÝnh:


</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>

Chao tam biet!


<i><b>Đề thi chọn đội tuyển Hà nội dự thi</b></i>



<i><b>Héi thi Tin học trẻ không chuyên toàn quốc 1998</b></i>


<b>Khối B: Trung học cơ sở</b>

<i><b>Thời gian: 120 phút</b></i>



<b>Bài 1. DOS</b>


Hóy xây dựng file AUTOEXEC.BAT cho phép khi nạp DOS có thể chỉ định các hành
động ban đầu khác nhau ứng với một trong 3 cấu hình sau của CONFIG.SYS:


a) AVR,
b) WIN,
c) PAS.


- Với chế độ AVR cần thực hiện các lệnh SCANDISK và DEFRAG ( các file
lệnh tơng ứng ghi trong th mục C:\DOS).


- Với chế độ WIN cần xóa hết các files trong th mục C:\WINDOWS\TEMP,
cần viết câu lệnh sao cho không phải trả lời Y từ bàn phím.


- Với cấu hình PAS cần sao sang ổ ảo với tên là D: toàn bộ th mục C:\ TP và
sau đó kích hoạt TURBO.EXE từ th mục D:\TP\BIN.


Kết quả ghi ra file với tên là AUTOEXEC.OPT


</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

Trận đấu kết thúc khi một trong hai đấu thủ giành đợc chiến thắng. Ngời thắng trong
cuộc thách đấu là ngời đầu tiên giành 2 trận thắng


Trong một cuộc thách đấu bóng bàn giữa hai đấu thủ A và B, kết quả thi đấu của họ đ


-ợc ghi nhận bởi một xâu gồm không quá 255 ký tự, mỗi ký tự chỉ là 0 hoặc 1, trong đó
qui ớc nếu ký tự thứ i của xâu là 1 thì có nghĩa là trong lần giao bóng thứ i đấu thủ A
thắng, và nếu ký tự thứ i của xâu là 0 thì đấu thủ A thua trong lần giao bóng này
(nghĩa là đấu thủ B thắng trong lần giao bóng thứ i). Cần phải xác định kết quả cuộc
thách đấu của hai đấu thủ.


<b>Dữ liệu: Vào từ bàn phím xâu gồm khơng q 255 ký tự biểu diễn kết quả thi đấu.</b>
<b>Kết quả: Đa ra màn hình: Với mỗi trận đấu: tỷ số trong các séc, và ngời thắng trong</b>
trận đấu. Nếu nh dữ liệu đã đủ xác định ngời thắng trong cuộc thách đấu thì có thể bỏ
qua phần dữ liệu còn lại. Nếu nh dữ liệu cha đủ xác định kết quả của trận đấu hoặc
cuộc thách đấu cần thông báo


“TRAN DAU CHUA KET THUC”
hoặc


CUOC THACH DAU CHUA KET THUC.
<b>Ví dụ:</b>


Với xâu nhập vào từ bàn phím:


111111111111100110001100000000001100000001100011110000000
000110000011000001100111100100111111001011100000000000000
1110110101


Kết quả cần đa ra màn hình:
Tran 1:


Sec 1: A-15 B-2
Sec 2: A-4 B-15
Sec 3: A-6 B-15



Tran dau ket thuc, B thang
Tran 2:


Sec 1: A-6 B-15
Sec 2: A-15 B-7
Sec 3: A-3 B-15


</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>

<i><b>Đề thi chọn đội tuyển Hà nội d thi</b></i>


<i><b>Hội thi Tin học trẻ không chuyên toàn quốc 1998</b></i>


<b>Khèi A: TiĨu häc</b>

<i><b>Thêi gian: 120 phót</b></i>



<b>Bµi 1. </b>

<b>DOS</b>



Em hãy dùng một phần mềm soạn thảo văn bản nào đó soạn các câu lệnh của
DOS thực hiện việc chuyển toàn bộ th mục TAYDUKY ở th mục chủ của ổ đĩa
C thành th mục con của th mục GAMES trong th mục chủ của ổ đĩa C.


Ghi văn bản chứa c¸c lƯnh cđa DOS nói trên vào tƯp cã tªn là
MOVE.TXT.


<b>Bài 2. </b>

<b>Soạn thảo văn bản</b>



Dựng mt phn mm son thảo văn bản tiếng Việt nào đó soạn giấy mời bạn đến dự sinh nhật của em. Ghi kết quả ra tệp có tên
GMOI với phần mở rộng ngầm định theo phần mềm mà em sử dụng.


<b>Bµi 3. </b>

<b>VÏ</b>




Hãy dùng một phần mềm đồ hoạ có sẵn để vẽ trang bìa cho truyện cổ tích
Thánh Gióng. Lu kết quả lại trong tệp TGIONG với phần mở rộng ngầm nh
theo phn mm v qui nh.


<b>Bài 4. </b>

<b>Trò ch¬i</b>



Hãy điền các chữ cái A, B, C, D vào các chỗ đánh dấu ? của các bảng chữ sau đây sao cho trong mỗi hàng ngang cũng nh mỗi
hàng dọc của mỗi bảng đều thấy có mặt tất cả các chữ cái A, B, C, D. Nếu đối với bảng nào đó khơng tìm đợc cách điền thì ghi
“KHONG CO LOI GIAI”.


B¶ng 1 B¶ng 2 B¶ng 3 B¶ng 4 B¶ng 5


A B C D
? ? B C
? ? ? A
C ? A ?


A ? ? ?
B A ? ?
C ? ? D
D ? ? ?


? ? ? B
A ? ? ?
B ? ? A
C ? ? ?


? D ? ?
? C ? ?


A ? ? C
B ? ? A


? A B D
D ? ? A
? ? D ?
? ? A ?


</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>

<i><b>Đề thi chọn đội tuyn H ni d thi</b></i>


<i><b>Hội thi Tin học trẻ không chuyên toàn quốc 1998</b></i>


<b>Khối A: Tiểu học</b>

<i><b>Thời gian: 120 phót</b></i>



<b>Bµi 1. </b>

<b>DOS</b>



Em hãy dùng một phần mềm soạn thảo văn bản nào đó soạn các câu lệnh của DOS thực hiện việc chuyển toàn bộ th mục TP7 là
th mục con của th mục PASCAL ở th mục chủ của ổ đĩa C thành th mục con của th mục chủ của ổ đĩa C.


Ghi văn bản chứa các lƯnh cđa DOS nói trên vào tệp có tên là
MOVE.TXT.


<b>Bài 2. </b>

<b>Soạn thảo văn bản</b>



Dựng mt phn mm son tho văn bản tiếng Việt nào đó trình bày một trang
sổ bài hát với bài hát mà em yêu thích nhất. Ghi kết quả ra tệp có tên BAIHAT
với phần mở rộng ngầm định theo phần mềm mà em sử dụng.


<b>Bµi 3. </b>

<b>VÏ</b>




Hãy dùng một phần mềm đồ hoạ có sẵn để vẽ biểu tợng cho Hội khoẻ Phù đổng
của trờng em. Lu kết quả lại trong tệp ICON với phần mở rộng ngầm định theo
phần mềm vẽ qui nh.


<b>Bài 4. </b>

<b>Trò chơi</b>



Hóy in cỏc s nguyờn dơng vào các chỗ đánh dấu ? của các bảng s sau õy
sao cho:


Tổng các số trong mỗi hàng ngang cũng nh mỗi hàng dọc và các


-ng chộo của bảng đều bằng nhau.


 Trong bảng 1 và 2 có mặt tất cả các số từ 1 đến 16 cịn trong bảng 3


có mặt tất cả các số từ 1 đến 25.


Nếu đối với bảng nào đó khơng tìm đợc cách điền thì ghi “KHONG CO LOI
GIAI”.


B¶ng 1 B¶ng 2 B¶ng 3


16 ? 3 13 16 ? 3 13 17 24 ? ? 15


5 11 10 8 5 11 15 8 23 ? 7 14 16


9 ? 6 ? 7 ? 12 ? 4 ? 13 20 22


? 14 ? ? ? 14 ? ? ? 12 19 21 3



11 18 25 2 9


Em hÃy ghi kết quả vào tệp văn bản có tên TROCHOI.TXT.


thi chn i tuyn tin học
<b>HảI Phòng - 1999</b>


</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>

Xét tập các phân số tối giản, có giá trị nằm trong khoảng từ 0 tới 1 và có mẫu
số nhỏ hơn hoặc bằng N. Các phân số này có thể đợc sắp xếp theo thứ tự tăng dần. Với
N cho trớc, số các phân số khác nhau S là một số hữu hạn.Ví dụ, với N = 5, có 11 phân
số:


0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1


Hãy lập trình xác định số các phân số khác nhau S từ N cho trớc và tìm phân
số có thứ tự K cho trớc hoặc ngợc lại.


<i>D÷ liƯu: Vào từ file FRACTION.INP:</i>


- Dòng thứ nhất: chứa số nguyên dơng N ( N ( 500),
- Các dòng sau: có một trong 2 dạng:


1 K


hoặc 2 P Q (P < Q)
- KÕt thóc là dòng chứa số 0 .


Dũng dng 1 u cầu tìm fân số có số thứ tự là K, dòng dạng 2 yêu cầu xác định số
thứ t ca phõn s Q/P



<i>Kết quả: đa ra file FRACTION.OUT:</i>
- Dòng thứ nhất: số S,


- Các dòng sau: mỗi dòng ứng với 1 dòng của file dữ liệu vào ( trừ dòng cuối cùng) và
có dạng: 1 P Q ( øng với câu hỏi loại 1)


hoặc 2 K ( ứng với câu hỏi loại 2)
Ví dụ:


FRACTION.INP FRACTION.OUT


5 11 1 1 4


1 3 2 7


2 3 5
0


Sơ đồ Tractenberg


Giáo s Jacob Tractenberg xây dựng một sơ đồ cho phép tính một cách nhanh chóng và
đơn giản tích 2 số ngun. Ví dụ, để tính 23*14 ta phải dựa trên bộ dữ liệu trung gian
12, 11 và 2. Các số trung gian này đợc gọi là bộ dữ liệu Tractenberg. Từ bộ dữ liệu
này, ta có thể dễ dàng suy ra tớch cn tỡm l 322.


Để hiểu về bộ dữ liƯu Tractenberg, ta xÐt thªm mét sè vÝ dơ:


241304  32 => 8 12 6 11 11 16



6 => 7721728


527  463 => 21 48 55 38 20


=> 244001


3214  5643 => 12 19 34 43 29 28 15


=> 18136602


1245  8 => 40 32 16 8


=> 9960


Hãy xác định cách xây dựng bộ dữ liệu Tractenberg và từ bộ dữ liệu này xác định các
cặp thừa số cũng nh tớch ca chỳng.


<i>Dữ liệu: vào từ file văn bản MULTP.INP các số của 1 bộ dữ liệu Tractenberg, số lợng </i>
số không quá 50, ghi trên 1 hoắc nhiều dòng, các số trên 1 dòng cách nhau ít nhất 1
dấu cách.


<i>Kết quả: đa ra file văn bản MULTP.OUT thông tin dạng:</i>
<i><b>Thừa số I * Thừa số II = TÝch</b></i>


</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

<i>VÝ dô: </i>


MULTP.INP MULTP.OUT


8 12 6 11 11 16 6 <sub>241304*32=772172</sub>



8


chu kỳ tuần hoàn


Xột hm F xỏc nh trờn tp các số nguyên từ 1 đến M ( M Ê 32767) Giá trị của hàm
cũng nằm trong khoảng đó. Cho N số nguyên x1, x2, . . ., xN ( 1 < N Ê 1000, 1 Ê xi Ê
M, i). Ngời ta xây dựng các véc tơ Vj nh sau:


V0 = x1, x2, . . ., xN


V1 = F(X1), F(X2), . . ., F(XN)


V2 = F(F(X1)), F(F(X2)), . . ., F(F(XN))


V3 = F(F(F(X1))), F(F(F(X2))), . . ., F(F(F(XN)))
. . . .


Vì tập giá trị của F là hữu hạn, nên đến một lúc nào đó dãy Vi sẽ lặp lại các giá trị của
mình. Hãy tìm độ dài của phần trớc khi xuất hiện chu kỳ và độ dài chu kỳ tuần hoàn
của dóy Vi.


<i>Dữ liệu: vào từ file CYCLE.INP:</i>
Dòng đầu tiên chứ số nguyên M,


Dòng thứ 2 chứa M sè nguyªn F(1), F(2), . . . , f(M),
Dòng thứ 3 chứa số nguyên N,


Dòng thứ 4 chøa N sè nguyªn x1, x2, . . ., xN
Các số trên 1 dòng cách nhau ít nhất 1 dÊu c¸ch.



<i>Kết quả: đa ra file văn bản CYCLE.OUT độ dài trớc chu trình và chu kỳ trên một </i>
dịng, các số cách nhau ít nhất 1 dấu cách


<i>VÝ dơ:</i>


CYCLE.INP CYCLE.OUT


10 2 6


5 6 4 3 2 5 1 1 5 4
4


1 10 8 1


D·y sè


Ngêi ta x©y dùng d·y vô hạn các số A[1], A[2], . . . . theo quy t¾c sau:
 A[1] = 0,


 Giả thiết đã xây dựng đợc dãy A[1], A[2], . . ., A[3M]. Khi đó, các số A[3M+1],
A[3M<sub>+2], . . . ,A[3</sub>M+1<sub>] sẽ nhận các giá trị tơng ứng là A[3</sub>M<sub>] + 3</sub>M<sub>, A[3</sub>M<sub>-1]+3</sub>M<sub>, . . .</sub>
., A[1]+3M<sub>, A[1]+2*3</sub>M<sub>, A[2]+2*3</sub>M<sub>, . . . , A[3</sub>M<sub>]+2*3</sub>M<sub>.</sub>


Với số nguyên N cho trớc ( 1 Ê N Ê 1 000 000 000) hóy xỏc nh A[N].


<i>Dữ liệu: vào từ file văn bản NUMBER.INP, gồm không quá 50 dòng, mỗi dòng một số</i>
nguyên N.


</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>

VÝ dơ:



NUMBER.INP NUMBER.OUT


</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>

§ơc lỗ


Cho t giy k ca rụ kớch thc 2N<sub> * 2</sub>N<sub> ô mỗi chiều ( 3 Ê N Ê 500). Ngời ta gập tờ</sub>
giấy này N-3 lần, mỗi lần gập nh sau: gấp mép dới lên mép trên để mặt trớc đè lên
nhau, sau đó gấp mép phải đè lên trên mép trái. Nh vậy, sau mỗi lần gấp kích thớc mỗi
chiều của tờ giấy giảm đi một nữa. Kết quả cuối cùng ta có xếp giấy kích thớc 8*8.
Bằng máy dập, ngời ta đục một số ô của xếp giấy đồng thời ở tất cả các lớp. Hãy xác
định, sau khi mở lại tờ giấy, ta có bao nhiêu phần rời nhau, biết rằng 2 ơ dính với nhau
khi chúng có ít nhất 1 cạnh chung.


<i>D÷ liƯu: vào từ file LIST.INP:</i>
Dòng đầu tiên chứa số nguyên N,


 8 dòng sau, mỗi dòng chứa 8 số 0 hoặc 1, trong đó 1 là ơ bị đục. Các s cỏch nhau
1 du cỏch.


<i>Kết quả: đa ra file LIST.OUT 1 số nguyên cho biết có bao nhiêu phần rời nhau.</i>
<i>VÝ dô: </i>


LIST.INP LIST.OUT


4 11


</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>

Đẳng cấu
Xét một đồ thị có hớng N đỉnh với các tính chất sau:


 Giữa 2 đỉnh u và v khác nhau tồn tại đúng 1 cung có hớng nối chúng,



 Khơng tồn tại cung nối trực tiếp một đỉnh với chính nó, tức là không tồn tại đỉnh
kiểu u  u.


Các đỉnh của đồ thị đợc đánh số từ 1 đến N. P là một hoán vị của các số từ 1 tới N.
Hoán vị P gọi là đẳng cấu với 2 đỉnh u và v, nếu hớng của cung (u,v) trùng với hớng
của cung (P(u), P(v)) trong đồ thị này.


Với một đồ thị và một hốn vị P cho trớc, ta có T đồ thị đẳng cấu đối với P.


Ví dụ: với N = 4 và P(1) = 2, P(2) = 4, P(3) = 3, P(4) = 1, tồn tại 4 đồ thị đẳng cấu ( T
= 4):


<i>Yêu cầu: Với một đồ thị và một hoán vị P cho trớc, hãy xác định T mod 100.</i>
<i>Dữ liệu: vào từ file văn bản AUT.INP:</i>


Dòng đầu tiên chứa số nguyên N, ( 0 < N Ê 10 000),


Các dòng sau chứa các sè nguyªn P(1), P(2), . . . ,P(N), ghi trên 1 hoặc nhiều
dòng, các số trên 1 dòng cách nhau ít nhất 1 dấu cách.


<i>Kết quả: đa ra file văn bản AUT.OUT phần d của phép chia T cho 4.</i>
<i>VÝ dô: </i>


AUT.INP AUT.OUT


4 4


</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>

Cây nhị phân


Xột cõy nh phõn. Cõy cú th rỗng hoặc có một số đỉnh. Mỗi đỉnh của cây có khơng


q 2 cây con. Đỉnh khơng thuộc một cây con nào đợc gọi là gốc. Mỗi đỉnh chứa một
chữ cái tiếng Anh khác nhau. Cây đợc gọi là Cây nhị phân tìm kiếm ( BST), nếu nó
thoả mãn điều kiện sau: với cây đã cho và cây con bất kỳ các nút ở cây con trái của nó
đều chứa chữ cái trớc chữ cái ở nút gốc và các các nút ở cây con phải đều chứa chữ cái
sau chữ cái ở nút gốc. Tập các chữ cái của cây có thể rỗng (nếu cây rỗng) hoặc là K
chữ cái đầu tiên, nếu cây có K nút. Mỗi cây BST tơng ứng với 1 xây K ký tự. Xâu đợc
xây dựng theo thứ tự giữa: đầu tiên là ký tự ở nút gốc, sau đó là các ký tự biểu diễn
cây con trái và cuối cùng là các ký tự biểu diễn cây con phải. Các xâu này đợc sắp xếp
theo thứ tự từ điển và cây đợc đánh số theo thứ tự từ điển của xâu. Mã (N, K) ký hiệu
xâu tơng ứng với cây thứ N trong các cây BST có đúng K nút.


VÝ dơ, víi K = 4, ta có 14 cây, tơng ứng với các xâu:


abcd, abdc, acbd, adbc, adcb, bacd, badc, cabd, cbad, dabc, dacb, dbac, dcab, dcba
M· (7, 4) là badc, tơng ứng với cây:


Yờu cu: t N v K cho trớc, xác định có bao nhiêu cây BST và mã (N,K), 0<K Ê26.
<i>Dữ liệu: vào từ file văn bản BST.INP, gồm nhiều dòng, mỗi dòng một cặp N, K, kết </i>
thúc là dòng chứa 2 số 0. Các số trên 1 dòng cách nhau 1 dấu cách.


<i>KÕt quả: đa ra file văn bản BST.OUT, mỗi dòng tơng ứng với một cặp N, K khác 0 của </i>
dữ liệu vào, chứa số lợng cây (số nguyên ) và m· (N,K).


<i>VÝ dô:</i>


BST.INP BST.OUT


2 3


7 4 5 acb14 badc



</div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46>

Tháp gạch


Trong b chi có N viên gạch nhựa, mỗi viên có dạng hình hộp chữ nhật, chiều cao
bằng đơn vị, chiều dài gấp đôi chiều cao, chiều rộng - không quan trọng. Để rèn luyện
tính cẩn thận, khéo tay và khả năng t duy lơ gíc, cơ giáo tổ chức một cuộc thi xây tờng
tháp, đáy là 2 viên gạch đặt kề nhau thành hình chữ nhật độ dài 4, độ rộng bằng độ
rộng viên gạch, mỗi tầng tiếp theo có số lợng gạch hơn hoặc kém tầng dới đúng 1
viên. Tháp phải có độ cao H ( H chẵn)và tầng trên cùng phải có đúng 1 viên. Hình dới
là một trong số các tháp có thể xây dựng ứng vi H = 6.


<i>Yêu cầu: </i>


Mi thỏp tng ng với một dãy số H nguyên T = ( T1, T2, . . . ,TH), trong đó Ti là số
viên gạch ở tầng thứ i (tính từ dới lên). Ví dụ, ở hình trên ta có T = (2, 3, 2, 3, 2, 1).
Hai tháp gọi là khác nhau, nếu tơng ứng với 2 dãy số khác nhau. Với H cho trớc,
hãy xác định xem có thể tồn tại bao nhiêu tháp khác nhau;


 Các dãy số T đợc sắp xếp theo thứ tự từ điển, cho biết thứ tự từ điển của dãy số T,
hãy xác định cấu hình của tháp, tức là xác định dóy s T.


<i>Dữ liệu: vào từ file TOWER.INP:</i>


Dòng đầu chứa số nguyên dơng H ( 0 < H Ê 110 ),
Các dòng sau: mỗi dòng chứa một số thứ tự từ điển của T,
File dữ liệu vào kết thúc bằng dòng chứa 1 số 0.


<i>Kết quả: đa ra file TOWER.OUT:</i>


Dũng u: tng số tháp khác nhau có thể xây dựng đợc,



 Các dòng sau: mỗi dòng chứa H số nguyên T1, T2, . . . ,TH ứng với số thứ tự từ điển
đã cho ở file dữ liệu vào, các số trên 1 dịng cách nhau 1 dấu cách.


VÝ dơ:


TOWER.INP TOWER.OUT


6 5


4 2 3 2 3 2 1


0


<i><b>Bài 4.Xâu Fibinacci </b></i> <i><b> Chơng trình đặt tên là BL4.PAS</b></i>


Xét dãy các xâu F1, F2, F3, . . . , FN, . . ., trong đó :
F1 = ‘A’,


F2 = ‘B’,


FK+1 = FK + FK-1, K = 2, 3, 4, . . .


Cho xâu S độ dài không quá 25, chỉ bao gồm các ký tự ‘A’ và ‘B’. Hãy xác định số
lần xuất hiện xâu S trong xâu FN , N Ê 35. Chú ý: hai lần xuất hiện của S trong FN
không nhất thiết phải là các xâu rời nhau hoàn toàn.


<i>Dữ liệu: vào từ file văn bản BL4.INP, bao gồm nhiều dòng, mỗi dòng có dạng:N S. </i>
Giữa N và S có đúng 1 du cỏch.



Dữ liệu vào là chuẩn, không cần phải kiểm tra.


<i>Kết quả: đa ra file văn bản BL4.OUT, mỗi dòng dữ liệu vào ứng với một dòng kết qu¶ </i>
ra.


</div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>

BL4.INP BL4.OUT


3 A 2


3 AB 0


8 BABBAB 4


<i><b>Bài 5. Vợt sông. </b></i> <i><b> Chơng trình đặt tên là BL5.PAS</b></i>


Dân thành phố Byteland say mê các mơn thể thao địi hỏi phải có t duy vật lý chuyên
nghiệp. Một trong các môn thể thao đó là vợt Hex River - con sông rộng nhất
Byteland. Có N cột, đánh số từ 1 đến N ( từ trái sang phải), đặt ở giữa sông. Ngời vợt
sông phải nhảy từ bờ trái tới cột có thể tới đợc, từ đó chuyển dần tới các cột khác cho
tới khi sang đợc bờ phải. Bờ trái nằm ở bên trái cột 1, còn bờ phải nằm ở bên phải cột
N.


ở thời điểm 0, vận động viên đứng ở bờ trái Hex River và tìm cách sang bờ phải một
cách nhanh nhất có thể. Tại mỗi thời điểm, một cột có thể ở trạng thái chìm hoặc trạng
thái nổi. Vận động viên có thể đứng ở bờ trái hoặc trên 1 cột, nếu nó ở trạng thái nổi.
Tại thời điểm 0 ban đầu, mọi cột đều ở trạng thái chìm, sau đó cột thứ i chuyển sang
trạng thái nổi trong Ai đơn vị thời gian, rồi chuyển sang trạng thái chìm trong Bi đơn vị
thời gian, rồi lại chuyển sang trạng thái nổi trong Ai đơn vị thời gian, . . . ( i = 1,
2, . . . , N). Ví dụ, cột 1 có A1 = 2 và B1 = 3 sẽ ở trạng thái chìm tại thời điểm 0, ở
trạng thái nổi trong các thời điểm 1 và 2, ở trạng thái chìm tại các thời điểm 3, 4, 5.,


v.v... ở thời điểm t+1, vận động viên có thể chọn cho mình 1 cột hoặc bờ sơng trong
phạm vi 5 cột tính từ vị trí mà ngơì đó đứng ở thời điểm t, hoặc anh ta có thể dừng lại
đó nếu có thể. Ví dụ, từ cột 5 bạn chỉ có thể tới các cột 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 hoặc
bờ trái.


Yêu cầu lập trình tính thời gian tối thiểu cần để vợt sơng hoc bỏo NO, nu khụng th
vt c.


Dữ liệu: vào từ file văn bản BL5.INP:


- Dòng đầu: số nguyên N ( 5 £ N £ 1000),


- Dßng thø i trong N dòng tiếp theo chứa 2 số nguyên Ai Bi, c¸ch nhau Ýt nhÊt 1 dÊu
c¸ch ( 1 £Ai , Bi £ 5).


Kết quả: đa ra file văn bản BL5.OUT số nguyên chỉ thời gian tối thiểu cần để vợt sông
hoạc thông báo NO, nếu không thể vợt đợc.


VÝ dô:


BL5.INP BL5.OUT


10 4


</div>

<!--links-->

×