phần 7 : đề bài

download :tại đây

kho tin học :khotinhoc.com

Bài 39/2000 - Ô chữ

(Dành cho học sinh THCS và THPT)

Trò chơi ô chữ thông dụng 30 năm trước của trẻ em gồm một khung ô chữ kích thước 5x5 chứa 24 hình vương nhỏ kích thước như nhau. Trên mặt mỗi hình vuông nhỏ có in một chữ cái trong bảng chữ cái. Vì chỉ có 24 hình vuông trong ô chữ nên trong ô chữ còn thừa ra một ô trống, có kích thước đúng bằng kích thước các hình vuông. Một hình vuông có thể đẩy trượt vào ô trống đó nếu nó nằm ngay sát bên trái, bên phải, bên trên hay bên dưới ô trống. Mục tiêu của trò chơi là trượt các hình vuông vào ô trống sao cho cuối cùng các chữ cái trong ô chữ được xếp theo đúng thứ tự của chúng trong bảng chữ cái. Hình sau đây minh hoạ một ô chữ với cấu hình ban đầu và cấu hình của nó sau 6 nước đi sau:

1.Trượt hình vuông phía trên ô trống.

2.Trượt hình vuông bên phải ô trống.

3.Trượt hình vuông bên phải ô trống.

4.Trượt hình vuông phía dưới ô trống.

5.Trượt hình vuông phía dưới ô trống.

6.Trượt hình vuông bên trái ô trống.

 

TT

RR

GG

SS

JJ

XX

OO

KK

LL

II

MM

DD

VV

BB

NN

WW

PP

 

AA

EE

UU

QQ

HH

CC

FF

 

T

R

G

S

J

X

D

O

K

I

M

 

V

L

N

W

P

A

B

E

U

Q

H

C

F

Cấu hình của ô chữ sau 6 nước.

 
           

          Cấu hình ban đầu của ô chữ     

 

Bạn hãy viết một chương trình của bạn chứa cấu hình ban đầu của ô chữ cùng các nước đi để vẽ ra ô chữ kết quả.

Input

Đầu vào của chương trình của bạn chứa cấu hình ban đầu của một ô chữ và một dẫy các nước đi trong ô chữ đó.

Năm dòng đầu tiên mô tả cấu hình ban đầu của ô chữ, mỗi dòng tương ứng với một hàng của ô chữ và chứa đúng 5 ký tự tương ứng với 5 hình vuông của ô chữ trên hàng đó. Ô trống được diễn tả bằng một dấu cách.

Các dòng tiếp theo sau là dẫy các nước đi. Dãy các nước đi được ghi bằng dãy các chữ A,B,R và L để thể hiện hình vuông nào được trượt vào ô trống. A thể hiện hình vuông phía trên ô trống được trượt vào ô trống, tương ứng: B-phía dưới, R-bên phải, L-bên trái. Có thể có những nước đi không hợp cách, ngay cả khi nó được biểu thị bằng những chữ cái trên. Nếu xuất hiện một nước đi không hợp cách thì ô chữ coi như không có cấu hình kết quả. Dãy các nước đi có thể chiếm một số dòng, nhưng nó sẽ được xem là kết thúc ngay khi gặp một số 0.

Out put

Nếu ô chữ không có cấu hình kết quả thì thông báo 'This puzzle has no final configuration.'; ngược lại thì hiển thị cấu hình ô chữ kết quả. Định dạng mỗi dòng kết quả bằng cách đặt một dấu cách vào giữa hai kí tự kế tiếp nhau. Ô trống cũng được sử lý như vậy. Ví dụ nếu ô trống nằm bên trong hàng thì nó được xuất hiện dưới dạng 3 dấu cách: một để ngăn cách nó với kí tự bên trái, một để thể hiện chính ô trống đó, còn một để ngăn cách nó với kí tự bên phải.

Chú ý: Input mẫu đầu tiên tương ứng với ô chữ được minh hoạ trong ví dụ trên.

Sample Input 1

TRGSJ

XDOKI

M VLN

WPABE

UQHCF

ARRBBL0

Sample Output 1

T  R  G S J

X  O K L I

M D V B N

W P     A E

U Q H C  F

Sample Input 2

AB C DE

F G H I J

KLMNO

PQRS

TUVWX

AAA

LLLL0

Sample Output 2

   A B C D

F G H I E

K L M N J

P Q R S O

T U V W X

Sample Input 3

ABCDE

FGHIJ

KLMNO

PQRS

TUVWX

AAAAABBRRRLL0

Sample Output 3

This puzzle has no final configuration.

 

Bài 40/2000 - Máy định vị Radio

Một con tàu được trang bị ăng-ten định hướng có thể xác định vị trí hiện thời của mình nhờ các lần đọc đèn hiệu địa phương. Mỗi đèn hiệu được đặt ở một vị trí đã biết và phát ra một tín hiệu đơn nhất. Mỗi khi bắt được tín hiệu, tàu liền quay ăng-ten của mình cho đến khi đạt được tín hiệu cực đại. Điều đó cho phép xác định được phương vị tương đối của đèn hiệu. Cho biết dữ liệu của lần đọc trước (thời gian, phương vị tương đối, vị trí của đèn), một lần đọc mới đủ để xác định vị trí hiện thời của tàu. Bạn phải viết một chương trình xác định vị trí hiện thời của tàu từ hai lần đọc đèn hiệu.

Vị trí của các đèn hiệu và các con tàu được cho trong hệ toạ độ vuông góc, trục Ox hướng về phía đông, còn Oy hướng về phía bắc. Hướng đi của con tàu được đo bằng độ, theo chiều kim đồng hồ tính từ hướng bắc. Như vậy, hướng bắc sẽ là 00, hướng đông là 900, hướng nam là 1800 và hướng tây là 2700. Phương vị tương đối của đèn hiệu cũng được đo bằng độ, tương đối với hướng đi của tàu và theo chiều kim đồng hồ. ăng ten không thể chỉ ra đèn hiệu nằm ở hướng nào trên phương vị. Như vậy, một phương vị 900 có nghĩa là đèn hiệu có thể nằm ở hướng 900 hoặc 2700.

Input  

Dòng đầu tiên của input là một số nguyên chỉ số lượng các đèn hiệu (nhiều nhất là 30). Mỗi dòng tiếp theo cho một đèn hiệu. Mỗi dòng bắt đầu bằng tên đèn (là một chuỗi kí tự không vượt quá 20 kí tự), sau đó là vị trí của đèn cho bằng hoành độ và tung độ. Các trường này phân cách bởi một dấu cách.

Dòng tiếp theo ngay sau các dữ liệu về đèn hiệu là một số nguyên chỉ số lượng các kịch bản đường đi của tàu. Mỗi kịch bản chứa 3 dòng gồm một dòng cho biết hướng đi của tàu so với hướng Bắc và vận tốc vận tốc thực của tàu, và hai dòng chỉ hai lần đọc đèn hiệu. Thời gian được đo bằng phút, tính từ lúc nửa đêm trong vòng 24 giờ. Vận tốc đo bằng đơn vị độ dài (như các đơn vị của hệ trục toạ độ) trên đơn vị thời gian. Dòng thứ hai của kịch bản là lần đọc thứ nhất gồm thời gian (là một số nguyên), tên đèn và góc phương vị tương đối với hướng đi của tàu. Ba trường được ngăn cách nhau bởi một dấu cách. Dòng thứ ba của kịch bản là lần đọc thứ hai. Thời gian của lần đọc này luôn lớn hơn lần đọc thứ nhất.

Output

Với mỗi kịch bản, chương trình của bạn phải chỉ ra được số thứ tự của kịch bản (Scenario 1, Scenario 2,...), và một thông báo về vị trí của con tàu (được làm tròn đến hai chữ số thập phân) tại thời điểm của lần đọc thứ hai. Nếu vị trí của tàu không thể xác định thì thông báo: ”Position cannot be determined.”

            Mẫu input và output chính xác tương ứng được cho như sau:

Sample Input

4

First 2.0 4.0

Second 6.0 2.0

Third 6.0 7.0

Fourth 10.0 5.0

2

0.0 1.0

1 First 270.0

2 Fourth 90.0

116.5651 2.2361

4 Third 126.8699

5 First 319.3987

Sample Output

Scenario 1: Position cannot be determined

Scenario 2: Position is (6.00, 5.00)

 

Bài 41/2000 - Cờ Othello

(Dành cho học sinh THCS và THPT)

Cờ Othello là trò chơi cho 2 người trên một bàn cờ kích thước 8x8 ô, dùng những quân tròn một mặt đen, một mặt trắng. Các đấu thủ sẽ được lần lượt đi một quân vào ô còn trống trên bàn cờ. Khi đi một quân, đấu thủ phải lật được ít nhất một quân của đấu thủ kia. Các quân sẽ lật được nếu chúng nằm liên tiếp trên cùng một đường thẳng (ngang, dọc hoặc chéo) mà ở hai đầu của đường đó là hai quân có mầu của đấu thủ đang đi. Khi xong một lượt đi, tất cả các quân đã bị lật đã được đổi sang màu của đấu thủ vừa đi. Trong một lượt đi có thể lật được nhiều hàng.

Ví dụ: Nếu thế cờ hiện thời ở bàn cờ bên trái và lượt đi là của đấu thủ trắng, thì anh ta có thể đi được một trong các nước sau: (3,5) (4,6) (5,3) (6,4). Nếu anh ta đi nước (3,5) thì sau nước đi thế cờ sẽ như ở bàn cờ bên phải.

Vẽ bàn cờ

Bạn hãy viết một chương trình để đọc một ván cờ từ một text file có qui cách:

8 dòng đầu tiên là bàn cờ thế, mỗi dòng chứa 8 kí tự, mỗi kí tự có thể là:

'-'    thể hiện một ô trống,

'B'   thể hiện một ô có quân đen,

'W'  thể hiện một ô có quân trắng.

Dòng thứ 9 chứa một trong hai kí tự 'B' hoặc 'W' để chỉ nước đi thuộc về đấu thủ nào.

Các dòng tiếp theo là các lệnh. Mỗi lệnh có thể là: liệt kê tất cả các nước đi có thể của đấu thủ hiện thời, thực hiện một nước đi, hay thôi chơi ván cờ đó. Mỗi lệnh ghi trên một dòng theo qui cách sau:

Liệt kê tất cả các nước đi có thể của đấu thủ hiện thời:

Lệnh là một chữ 'L' ở cột đầu tiên của dòng. Chương trình phải kiểm tra cả bàn cờ và in ra tất cả các nước đi hợp lệ của đấu thủ hiện thời theo dạng (x,y) trong đó x là hàng và y là cột của nước đi. Các nước đi này phải được in theo qui cách:

+ Mọi nước đi trên hàng i sẽ được in trước mỗi nước đi trên hàng j nếu j>i.

+ Nếu trên hàng i có nhiều hơn 1 nước đi thì các nước đi được in theo thứ tự của cột.

Mọi nước đi hợp lệ phải in trên một dòng. Nếu không có nước đi nào hợp lệ vì đấu thủ hiện thời không thể lật bất cứ một quân nào thì phải in ra thông báo 'No legal move'.

Thực hiện một nước đi

Lệnh là một chữ 'M' ở cột đầu tiên của dòng, tiếp theo sau là 2 chữ số ở cột thứ hai và thứ ba của dòng. Các chữ số chỉ ra hàng và cột của ô trống trên bàn cờ nơi đấu thủ hiện thời sẽ đặt quân của mình,  trừ phi anh ta không có nước đi hơp lệ nào. Nếu đấu thủ hiện thời không có nước đi hợp lệ nào thì anh ta được thay bởi đấu thủ kia và bây giờ nước đi là của đấu thủ mới. Chương trình phải kiểm tra khi đó nước đi là hợp lệ. Bạn sẽ phải ghi nhận sự thay đổi trên bàn cờ, kể cả việc thêm các quân mới lẫn việc thay đổi màu sắc quân cờ bị lật. Cuối mỗi nước đi hãy in ra số lượng tất cả các quân cờ mỗi màu trên bàn cờ theo qui cách 'Black - xx White - yy, trong đó xx là số lượng các quân đen còn yy là số lượng các quân trắng. Sau một nước đi, đấu thủ hiện thời được thay bởi đấu thủ kia.

Thôi chơi ván cờ đó

Lệnh là một chữ 'Q' ở cột đầu tiên của dòng, dòng lệnh này kết thúc Input cho ván cờ đang xét. Chương trình phải in thế cờ cuối cùng của ván cờ theo qui cách được dùng ở input.

Bạn phải kiểm tra tính chính xác của các lệnh. Không được để dòng trắng ở bất cứ nơi nào trong output.

 

Bài 42/2000 - Một chút về tư duy số học

(Dành cho học sinh Tiểu học)

Tìm số tự nhiên nhỏ nhất khi chia cho 2, 3, 4, 5, 6, 7, 8, 9, 10 cho phần dư tương ứng là 1, 2, 3, 4, 5, 6, 7, 8, 9.

 

Bài 43/2000 - Kim giờ và phút gặp nhau bao nhiêu lần trong ngày

(Dành cho học sinh Tiểu học)

Đồng hồ quả lắc có 2 kim: giờ và phút. Tính xem trong vòng 1 ngày đêm (từ 0h - 24h) có bao nhiêu lần 2 kim gặp nhau và đó là những lúc nào.

 

Bài 44/2000 - Tạo ma trận số

(Dành cho học sinh THCS)

Cho trước số nguyên dương N bất kỳ. Hãy viết thuật toán và chương trình để tạo lập bảng NxN phần tử nguyên dương theo quy luật được cho trong ví dụ sau:

1 2 3 4 5 6

2 4 6 8 10 12

3 6 9 12 2 4

4 8 12 2 4 6

5 10 2 4 6 8

6 12 4 6 8 10

Thực hiện chương trình đó trên máy với N=12, đưa ra màn hình ma trận kết quả (có dạng như trong ví dụ).