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è[r]
Trang 1Câu lạc bộ tin học Chơng trình đặt tên là CLUB.PAS
“ 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 tinhọ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 đặtsau ô kính, trên đó cho biết: mã vào cửa là một số có N chữ số, ( 1 Ê N Ê 10), mỗichữ 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àocửa cho ngày hôm nay
Hãy lập trình giúp các bạn yêu thích tin học xác định khoá mở cửa câu lạc bộ
Dữ liệu: vào từ file văn bản CLUB.INP:
Dòng đầu là 3 số nguyên N M K
Dòng thứ i trong K dòng tiếp theo ghi 2 giá trị Codei Li
Kết quả: đa ra file văn bản CLUB.OUT mã tìm đợc.
Trang 2Trò chơi điện tử Chơng trình đặt tên là PITON.PAS
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 ô vuông 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 Ngoà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 xuống dới và từ trái qua phải.
Dữ liệu: vào từ file văn bản PITON.INP:
Dòng đầu tiên là 2 số nguyên N M ( 2 Ê
l-Ê 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ố lần bấm liên tiếp phím này.
Các dữ liệu trên một dòng cách nhau
ít nhất một dấu cách.
Kết quả: đa ra file văn bản PITON.OUT số
nguyên, xác định thời điểm trò chơi kết thúc
Trang 3R R P PR
R RP P R
R PP R
R P .P PP R
PPP P R
P PPP
PP P PP
PP P XP
Trang 4Hội nghị bàn tròn Chơng trình đặt tên là CONF.PAS
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ạigiao 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 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
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)
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 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
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 báo KHONG CO, trong trờng hợp ngợc lại - đa ra dãy N số nguyên xác
Trang 5Mã hoá kép Chơng trình đặt tên là
ENCRYPT.PAS
Để đả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ã hoá nh sau:
Xoá 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
đoạn nội dung trớc khi mã hoá (Khoá giải mã).
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
bớc mã hoá sẽ là: Meet me in St Louis, Louis.
GOVGG OQNVU PKWQN UKWUK
Văn bản đợc truyền đi với khoá 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ã hoá hay từ khoá sai) thì đa ra thông báo NO
Dữ liệu: Vào từ file văn bản ENCRYPT.INP:
Dòng đầu tiên là số nguyên N cho biết số nhóm trong văn bản đã mã hoá ( 4 Ê N
Ê 200),
Các dòng tiếp theo: văn bản đã mã hoá,
Dòng cuối cùng: Khoá giải mã
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
nhau một dấu cách hoặc thông báo NO, nếu không thể giải mã đợc
Để 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,
Trong dạng biểu diễn hệ 10 của Y không có các chữ số d1, d2, , dn ( 1 Ê n Ê 9),
Trang 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ò
D÷ liÖu: Vµo tõ file VAT.INP:
Trang 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ộtcuộ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ựctiế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à Tinhọ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ênrằ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ếtcho đế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
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âuhỏi 0 j trong biên bản
Dữ liệu: vào từ file NETCONF.INP:
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ợngcặp số không vợt quá 1 000 000
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
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
Bài 1 Dãy số khác nhau.
Xét dãy 4 số nguyên không âm ( P 1 ,P 2 ,P 3 ,P 4 ) 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 (ẵP 1 -P 4 ẵ,ẵP 1 -P 2 ẵ,ẵP 2 -P 3 ẵ,ẵP 3 -P 4 ẵ).
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).
Nh vậy với 3 lần biến đổi dãy 4 số khác nhau ban đầu trở thành dãy các số giống nhau Với những dãy số khác nhau, số lần biến đổi có thể khác nhau.
Trang 8Hãy lập trình nhập số N ( 0 < N Ê 10) hãy tìm dãy số không âm ( P 1 ,P 2 ,P 3 ,P 4 ) có P i 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 lần.
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.
Kết quả : đa ra file P4.OUT, mỗi dòng gồm 5 số nguyên không âm N P1 P 2 P 3 P 4 ứng với từng dòng của file dữ liệu vào.
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 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, 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).
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
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.
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 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.
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ử cuối cùng ( A[M,N] ) của ma trận lớn nhất.
Dữ liệu: vào từ file MT.INP:
- 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 phần tử của A khác nhau từng đôi một, nguyên và thuộc phạm vi Longint.
Kết quả: đa ra file MT.OUT số nguyên A[M,N] tìm đợc.
4 3 5
Trang 92 8 1
Bài 2 Số nhị phân Fibonacci
Xét dãy số Fibonacci F 0 , F 1 , F 2 , F 3 , ,F n , với F 0 = F 1 = 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 = i F i , 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.
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
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.
Kết quả: đa ra file FIB.OUT:
- 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).
Ví dụ: FIB.INP FIB.OUT
- File WINDOWT.TXT chứa văn bản T
Kết quả: Đa ra file WINDOW.OUT số nguyên, xác định số lợng cửa sổ tìm
đ-ợc theo yêu cầu
Bài 2 Cửa sổ màn hình đồ hoạ
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óctrê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ộtphầ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ớiphả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
Dữ liệu: Vào từ file GW.INP:
Trang 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ộtcửa sổ
Kết quả : đa ra file GW.OUT:
- Dòng đầu: số nguyên S, xác định diện tích cửa sổ tìm đợc S = 0, nếu khôngthể tìm đợc cửa sổ đáp ứng yê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
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 ở rnút lá đó lại, đặt một viên vào nút P, xoá tất cả các nút lá của nó và hoàn trả r-1viê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
Dữ liệu: vào từ file văn bản STONE.INP:
Các số trên 1 dòng cách nhau ít nhất 1 dấu cách
Kết quả: đa ra file STONE.OUT số lợng viên sỏi tối thiểu cần thiết.
Bài 1 Ngôn ngữ khởi tạo hằng
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,
- MINUS1 Khởi tạo hằng -1,
Trang 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 đó
Dữ liệu: vào từ file CONS.INP, mỗi dòng một số nguyên cần tạo.
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
trình là dấu # 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.
DUP INC
# -5 MINUS1 DUP DUP INC DUP INC
Bài 2 Số nhị phân Fibonacci
Xét dãy số Fibonacci F 0 , F 1 , F 2 , F 3 , ,F n , với F 0 = F 1 = 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 = i F i , 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.
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
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.
Kết quả: đa ra file FIB.OUT:
- 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).
Ví dụ: FIB.INP FIB.OUT
Bài 1 Cửa sổ văn bản
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 Pgồ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êntiế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
- File WINDOWT.TXT chứa văn bản T
Kết quả: Đa ra file WINDOW.OUT số nguyên, xác định số lợng cửa sổ tìm
đ-ợc theo yêu cầu
Ví dụ :
Trang 124 2
is
This is sample textfor the first task onthe contest
8
Vòng tròn con
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
Dữ liệu : Vào từ file văn bản CIRCLE.INP:
+ 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
Kết quả: Đa ra file văn bản CIRCLE.OUT:
+ 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
Dữ liệu: vào từ file BIT.INP, mỗi dòng một số nguyên K.
Kết quả: đa ra file BIT.OUT các bít tìm đợc, mỗi bít trên một dòng.
Ví dụ:
Trang 13Bài 2 Rô bốt thám hiểm
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
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ố
đều thuộc phạm vi Integer, cách nhau ít nhất 1 dấu cách
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
tìm đợc
Ví dụ:
Bài 3 Tráo bài.
Giả thiết 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ụ:
Trang 14620
Bài 4 Luỹ thừa số học.
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
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 <
1000, 1 Ê N Ê 9)
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
t-ơng ứng của file dữ liệu vào
Trang 15Yê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 soó từ 1 trở đ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 Ê
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
Kết quả: đa ra file ABC.OUT:
Dòng đầu tiên là tổng số các băng màu có thể có,
1427
Trang 16Bảng đèn
Cho bảng hình vuông, 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 tồn tại cách chuyển
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
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)
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
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
một nút cần bấm, dới dạng R i hoặc C j.
Khôi phục ngoặc
Cho một biểu thức toá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 xoá hết các toán hạng và phép tính, chỉ để lại ngoặc Một ngờikhá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
Hãy khôi phục lại dãy các ngoặc dựa vào dãy các số nguyên cho trớc
Dữ liệu: vào từ file văn bản BALANC.INP:
Trang 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
Kết 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
Dữ liệu: vào từ file văn bản EQUATION.INP:
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 -
Kết quả: đa ra file EQUATION.OUT các giá trị a1, a2, , an+1, x0 , mỗi số trên 1 dòng
Khung nhựa
Xét 2 khung nhựa dẻo đợc cố định trong không gian Mỗi khung đợc tạo thành
từ những đoạn thẳng, gắn với nhau thành một khung khép kín Các đoạn thẳng của một khung không cắt nhau và 2 khung không có điểm chung
Trang 18Khung 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
Dữ liệu: vào từ file văn bản FRAME.INP:
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 + hoặc -
Kết quả: đa ra file FRAME.OUT thông báo YES nếu tách đợc và NO trong
Nh vậy, với 3 đối tợng ( a, b, c) có thể tồn tại 13 quan hệ phân loại:
a = b = c a = b < c c < a = b a < b = c
b = c < a a = c < b b < a = c a < b < c
a < c < b b < a < c b < c < a c < a < b
Trang 19c < b < aCho số n, hãy xác định số lợng quan hệ phân loại khác nhau.
Dữ liệu: vào từ file văn bản COND.INP, gồm nhiều số nguyên n ( trong phạm
đá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 quân dọc theo cột xuống ô trống phía dới cho đến khi chạm biên hoặckhô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
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
Dữ liệu: vào từ file RBWGAME.INP gồm 10 dòng, mỗi dòng chứa 1 xâu 15 ký tự R,
B, W tơng ứng với các dòng của bảmg tính từ trên xuống dới
Trang 20Kết quả: đa ra file RBWGAME.OUT, mỗi dòng ứng với 1 nớc đi ( lần chọn vùng)
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ố quân còn lại trong bảng
Trang 21Xé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
Ví dụ : Chuỗi từ có độ dài 6
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
chuỗi từ dài nhất trong file
Kết quả: Đa ra file văn bản VB.OUT:
Dòng đầu chứa độ dài của chuỗi,
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
Trang 22Để kiểm 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:
if C1 then if C2 then A1 else A2 else if C2 then A3 else A4;
if C2 then if C1 then A1 else A3 els if C1 then A2 else A4;
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
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ố
12
bảng quảng cáo điện tử
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 lệnh sau:
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 phần nhìn thấy so với toàn bảng
Dữ liệu: Vào từ file văn bản RECLAM.INP:
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
Kết quả: Đa ra file RECLAM.OUT, mỗi dòng ứng với 1 dòng câu lệnh C của file dữ
liệu vào, gồm 1 số nguyên và một số thực với 2 chữ số lẻ ( Diện tích và tỷ lệ %)
Trang 23Để liên lạc với tàu thăm 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 toà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 quá 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 cần 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ôngbáo), các số nếu ở trên 1 dòng - cách nhau ít nhất 1 dấucá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ờnghợp số cần phát là 1 thì kết quả ra dợc ghi là 0