Đề thi trên máy bảng C - THPT năm 2008

doc2 trang | Chia sẻ: hoangcuong.10 | Lượt xem: 1094 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Đề thi trên máy bảng C - THPT năm 2008, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Hội thi Tin học trẻ tỉnh Quảng Ninh lần thứ IX-2008
ĐỀ THI TRÊN MÁY BẢNG C - THPT
Ngày thi: 25-6-2008
Thời gian làm bài: 150 phút
ĐỀ CHÍNH THỨC
(Đề thi gồm 02 trang)
TỔNG QUAN VỀ ĐỀ THI
Bài toán
File chương trình
File vào
File ra
Giới hạn thời gian
Bài 1
bond.pas
bond.in
bond.out
1 giây / 1 test
Bài 2
pencil.pas
pencil.in
pencil.out
1 giây / 1 test
Bài 3
keys.pas
keys.in
keys.out
1 giây / 1 test
Bài 1. An Encrypted Message for James Bond
Điệp viên 007 (James Bond) có một nét đặc trưng riêng là các tài liệu của ông luôn được mã hóa. Nếu ông ta nhận được một thông báo đã được mã hóa bằng một xâu chỉ gồm các chữ số và có chứa bình phương của một số tự nhiên n nào đó (1 < n ≤ 10.000) thì ông ta trở nên hoang mang và điều này đôi khi làm giảm đáng kể khả năng làm việc của ông ta. Để tránh điều này, ông X đề xuất hành động như sau: Tìm bình phương của một số tự nhiên n2 (ở đó n là một số tự nhiên như mô tả ở trên) ở bên trái nhất trong thông báo mã hóa và thay thế nó bởi số n. Nếu có nhiều hơn bình phương của một số nguyên cùng bắt đầu tại vị trí trái nhất thì chọn số bình phương nhỏ nhất trong số chúng. Một bình phương của một số là không được bắt đầu với chữ số 0. Sau đó lặp lại hành động này với thông báo mã hóa mới cho đến khi không có một bình phương của số nguyên nào nằm trong đoạn cho trước trên trong thông báo mã hóa còn lại.
Công việc của bạn là viết một chương trình thực hiện thuật toán của ông X đề xuất.
Dữ liệu: Dòng đầu tiên của file vào chứa một xâu chỉ gồm các chữ số và không chứa bất kỳ dấu cách nào của thông báo mã hóa. Xâu này chứa ít nhất là 1 và nhiều nhất là 250 chữ số. Chữ số đầu tiên của xâu không là chữ số 0.
Kết quả: File ra gồm một dòng chứa xâu đã được sửa bởi thuật toán của ông X. 
Ví dụ:
bond.in
bond.out
734424
268
8136045
605
Bài 2. Pencil Factory
Ở một nhà máy sản xuất bút chì, các bút chì được sản xuất theo cách sau: đầu tiên nó được sơn ở máy sơn, rồi ngay sau đó nó được chuyển tới máy đánh véc ni. Tuy nhiên không máy nào trong số hai máy này được điều chỉnh một cách hợp lý. Máy sơn sẽ không sơn một cái bút chì sau khi đã sơn n cái bút chì. Bên cạnh đó, máy đánh véc ni sẽ không đánh véc ni một cái bút chì sau khi đã đánh véc ni m cái bút chì. Vì vậy mà nhà máy đã sản xuất ra 4 loại bút chì: một loại hoàn thiện tức là được đánh cả sơn và véc ni; một loại không được sơn và cũng không được đánh véc ni; một loại được sơn nhưng chưa đánh véc ni và một loại được đánh véc ni nhưng không được sơn và.
Công việc của bạn là viết một chương trình được cho trước n, m và k (k là số bút chì đã được sản xuất) và tính số bút chì thuộc mỗi loại trên. Ví dụ, nếu n = 3, m = 5 và k = 17 thì việc xử lý các bút chì được minh họa qua bảng dưới đây (?: là việc xử lý đã hoàn thành, l: là việc xử lý chưa hoàn thành):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sơn
?
?
?
l
?
?
?
l
?
?
?
l
?
?
?
l
?
Véc ni
?
?
?
?
?
l
?
?
?
?
?
l
?
?
?
?
?
Trong ví dụ trên, chỉ có 12 trong số 17 bút chì là được xử lý đầy đủ. Một cái bút chì (cái thứ 12) là không được xủ lý một công đoạn nào cả. Một cái bút chì (cái thứ 6) là được sơn nhưng không được đánh véc ni. Ba cái bút chì (cái thứ 4, 8 và 16) được đánh véc ni nhưng không được sơn.
Dữ liệu: File vào gồm một dòng chứa 3 số tự nhiên n, m, k (0 < n < 106, 0 < m < 106, 0 < k < 109) ghi ngăn cách nhau bởi một dấu cách.
Kết quả: File ra gồm một dòng ghi 4 số ngăn cách nhau bởi một dấu cách, tương ứng là số các bút chì đã được đánh cả sơn và véc ni, số bút chì không được sơn và cũng không được đánh véc ni, số bút chì đã được sơn nhưng không được đánh véc ni và số bút chì đã được đánh véc ni nhưng không được sơn.
Ví dụ:
pencil.in
pencil.out
3 5 17
12 1 1 3
999999 999999 999999999
999999000 999 0 0
Bài 3. Key Task
Mê cung là một lưới hai chiều các ô vuông, mỗi ô vuông hoặc là tự do hoặc có một bức tường. Một số ô vuông tự do có chứa các cửa hoặc các chìa khóa. Có 4 kiểu chìa khóa và cửa khác nhau: xanh da trời, vàng, đỏ và xanh lá cây. Một chìa khóa chỉ có thể mở các cửa có cùng màu với nó.
Bạn có thể di chuyển giữa các ô vuông tự do gần kề theo hướng thẳng đứng hoặc nằm ngang, di chuyển theo đường chéo là không được phép. Bạn không thể đi qua một bức tường và cũng không thể đi ra ngoài mê cung. Nếu một ô vuông chứa một cánh cửa thì bạn chỉ có thể đi qua nó nếu trước đó bạn đã đi qua một ô vuông chứa một chìa khóa có thể mở được cửa này.
Dữ liệu: Dòng đầu tiên của file vào chứa hai số nguyên R và C (1 ≤ R, C ≤ 100) mô tả kích thước của mê cung. Tiếp theo có R dòng, mỗi dòng chứa C ký tự. Mỗi ký tự có thể là: ‘#’ (tường), ‘.’ (ô vuông tự do), ‘*’ (vị trí của bạn), ‘B’, ‘Y’, ‘R’, ‘G’ (cửa màu xanh da trời, vàng, đỏ, xanh lá cây), ‘b’, ‘y’, ‘r’, ‘g’ (chìa khóa màu xanh da trời, vàng, đỏ, xanh lá cây) và ‘X’ (lối thoát).
Chú ý rằng: có thể có nhiều hơn một lối thoát và bạn chỉ cần thoát ra tại một lối thoát nào đó trong số các lối thoát; có thể có nhiều cửa cùng màu và có thể có nhiều chìa khóa cùng màu; Vị trí của bạn (đánh dấu ‘*’) xuất hiện đúng một lần.
Kết quả: File ra gồm một dòng chứa xâu “Escape possible in S steps.”, ở đó S là số bước nhỏ nhất để bạn đi đến một lối thoát bất kỳ nào đó. Nếu không thể đi tới một lối thoát thì ghi ra xâu “The poor student is trapped!”. Một bước đi được định nghĩa là một sự di chuyển giữa hai ô kề cạnh. Việc nhặt chìa khóa hay mở cửa không tính là một bước.
Ví dụ:
keys.in
keys.out
1 10
*........X
Escape possible in 9 steps.
1 3
*#X
The poor student is trapped!
3 20
####################
#XY.gBr.*.Rb.G.GG.y#
####################
Escape possible in 45 steps.
- HẾT -

File đính kèm:

  • docDe thi tren may C.doc