You are on page 1of 10

1099.

CHIA SÔ-CÔ-LA
Hàng triệu người trên thế giới
thưởng thức nhiều loại sô cô la khác
nhau mỗi ngày. Socola có lẽ là loại
kẹo phổ biến và có ở hầu như tất cả
các quốc gia trên khắp thế giới.
Bạn nhận ra rằng điều thú vị hơn so với ăn là chia sẻ sô cô la với bạn bè. Đáng tiếc là bạn bè
của bạn vô cùng cầu kì và họ có những nhu cầu khác nhau: một số người muốn nhiều hơn và
những người khác lại thích số sô-cô-la ít hơn mà số lượng mà bạn đưa cho họ. Bạn ngày càng
khó khăn trong việc xác định liệu có thể đáp ứng được nhu cầu của họ không. Bạn cần viết một
chương trình giải quyết vấn đề này!
Thanh sô-cô-la của bạn là một hình chữ nhật. Thanh bao gồm những miếng hình chữ nhật kích
cỡ bằng nhau. Để chia sẻ sô-cô-la, bạn có thể bẻ thanh kẹo thành hai mảnh dọc theo đường
rãnh giữa các hàng hoặc các cột của thanh. Sau đó bạn có thể tiếp tục bẻ hai mảnh sô cô la trên
thành các mảnh nhỏ hơn. Mỗi người bạn của bạn khăng khăng muốn được duy nhất một hình
chữ nhật với số miếng sô cô la con là một con số cụ thể nào đó. Và bạn cũng khẳng định rằng:
bạn sẽ chỉ bẻ thanh sô cô la của mình khi chia được hết hết cho các bạn, không thừa miếng nào
cả
Đối với ví dụ Hình 9 cho thấy một cách bẻ thanh sô-cô-la kích thước 3 x 4 miếng thành 4 phần
có chứa 6, 3, 2, và 1 miếng, bằng cách bẻ 3 lần (ứng với test mẫu đầu tiên).
INPUT
Input có nhiều test. Dòng đầu mỗi test là số nguyên n (1≤n≤15) là số lượng của các phần mà
thanh sô cô la phải được chia. Dòng tiếp theo chứa hai số nguyên x và y (1≤x, y≤100) là kích
thước của thanh sô-cô-la. Dòng thứ ba chứa n số nguyên dương là số miếng socola trong n
phần.Kết thúc là dòng có chứa một số 0.
OUTPUT
Đối với mỗi test, đầu tiên hiển thị số thứ tự test. Sau đó xuất ra "Yes" nếu có thể bẻ thanh sô cô
la theo cách mong muốn. In ra “No” nếu không bẻ được.

Sample Input Sample Output


4 Case 1: Yes
34 Case 2: No
6321
2
23
15
0

1204. TRÒ CHƠI VUI NHỘN


Một đám trẻ em đứng xung quanh một cây cổ thụ chơi một trò chơi. Cây rất lớn nên mỗi đứa
trẻ chỉ có thể nhìn thấy những đứa trẻ sát cạnh mình.
Trò chơi này bao gồm nhiều 'lượt'. Lúc bắt đầu mỗi lượt chơi, một đứa trẻ bất kì cầm một
mảnh giấy viết chữ "B"nếu mình là một cậu bé hoặc chữ "G" nếu mình là một cô gái. Sau đó bé
này chọn một hướng để truyền giấy (theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ),

[1]
và chuyển tờ giấy cho bé đứng kế bên mình theo hướng đó. Những đứa trẻ nhận được giấy
viết ra giới tính của mình, và chuyển tờ giấy tới người đứng kế mình theo cùng một hướng.
Bằng cách này, tờ giấy đi qua từng đứa trẻ một, cho đến khi một trong những đứa trẻ ngừng
truyền giấy và báo khi kết thúc lượt chơi.
Ví dụ, có năm trẻ em xung quanh cây, và giới tính của chúng
được thể hiện trong Hình-1. tờ giấy đầu tiên đi đến Kid1, sau
khi viết "B" cậu chuyển nó tới Kid2, và Kid2 chuyển tới Kid3.
Sau khi Kid3 viết "G", cô bé kết thúc lượt này, và chúng ta nhận
được giấy với chuỗi "BBG".
Sau N lượt, chúng ta nhận được N mẩu giấy với chuỗi "B"
và/hoặc "G". Một trong những đứa trẻ sẽ nhận được tất cả các
tờ giấy, và phải tìm ra ít nhất bao nhiêu bé đứng xung quanh
gốc cây. Biết rằng có ít nhất hai đứa trẻ. Hãy viết một chương trình để giúp cậu ta.
INPUT
Có một số test. Ở mỗi test, dòng đầu chứa một số nguyên N là số tờ giấy (2≤N≤16). MỗiN
dòngtiếp theo chứa một chuỗikhác rỗng gồm cácchữ "B"vàhoặc"G" . Mỗi chuỗi có không quá
100 chữ. Test có N = 0 đánh dấu kết thúccủa input (không xử lý test này).
OUTPUT
Đối với mỗi test, xuất ra số lượng trẻ em ít nhất có thể có trong một dòng.

Sample Input Sample Output


3 9
BGGB 6
BGBGG
GGGBGB
2
BGGGBBBGG
GBBBG
0

1252. HAI MƯƠI CÂU HỎI


Hãy xét một thế giới khép kín và một tập hợp các đặc tính được định nghĩa cho tất cả các đối
tượng trong thế giới. Mỗi một đặc tính có thể được trả lời bằng câu hỏi “CÓ” hoặc “KHÔNG”. Sử
dụng những đặc tính này, chúng ta có thể phân biệt bất kỳ đối tượng nào với đối tượng khác
trong thế giới. Nói cách khác, mỗi đối tượng có thể được biểu diễn như một chuỗi có độ dài cố
định các phép toán logic. Bất kỳ hai đối tượng khác nhau sẽ có ít nhất một đặc tính khác nhau.
Bạn muốn phân biệt một đối tượng từ những đối tượng khác. Với mục đích này, bạn có thể đặt
một loạt các câu hỏi cho ai đó hiểu rõ về những đối tượng này. Mỗi câu hỏi bạn có thể hỏi về
một trong các đặc tính. Người này ngay lập tức trả lời từng câu hỏi với đáp án “CÓ” hoặc
“KHÔNG” một cách chính xác. Bạn có thể chọn câu hỏi tiếp theo sau khi bạn nhận được câu trả
lời cho các câu hỏi trước.
Bạn trả cho người trả lời 100 yên. Bởi vì bạn không có nhiều tiền, bạn cần giảm thiểu số lượng
các câu hỏi. Bạn không biết câu trả lời chính xác, nhưng may mắn là biết tất cả các đối tượng
trong thế giới. Do đó, bạn có thể lập một chiến lược tối ưu trước khi bạn bắt đầu đặt câu hỏi.

[2]
Vấn đề bạn phải giải quyết là: cho một tập hợp của các đối tượng đã được mã hóa, hãy giảm
thiểu số lượng truy vấn tối đa trong bộ dữ liệu.
INPUT
Input là chuỗi các bộ dữ liệu. Trong mỗi bộ dữ liệu, dòng đầu chứa hai số nguyên, m và n:
tương ứng là số lượng đặc tính, và số lượng các đối tượng. Bạn có thể giả sử 0 <m ≤ 11 và 0 <n
≤ 128. Tiếp theo là n dòng, mỗi dòng tương ứng với một đối tượng. Mỗi dòng bao gồm một
chuỗi nhị phân độ dài m đại diện cho việc CÓ hoặc KHÔNG có các đặc tính tương ứng. Không
có hai đối tượng giống hệt nhau.Dòng chứa hai số không đánh dấu kết thúc input. Có tối đa
100 bộ dữ liệu.
OUTPUT
Đối với mỗi bộ dữ liệu, giảm thiểu tối đa số lượng các câu hỏi để có thể phân biệt được mọi đối
tượng và in số lượng này ra.

Sample Input Sample Output


81 0
11010101 2
11 4 4
00111001100 11
01001101011 9
01010000011
01100110001
11 16
01000101111
01011000000
01011111001
01101101001
01110010111
01110100111
10000001010
10010001000
10010110100
10100010100
10101010110
10110100010
11001010011
11011001001
11111000111
11111011101
11 12
10000000000
01000000000
00100000000
00010000000
00001000000
00000100000
00000010000
00000001000
00000000100
00000000010
00000000001
00000000000
9 32
001000000
000100000
000010000
000001000
000000100

[3]
000000010
000000001
000000000
011000000
010100000
010010000
010001000
010000100
010000010
010000001
010000000
101000000
100100000
100010000
100001000
100000100
100000010
100000001
100000000
111000000
110100000
110010000
110001000
110000100
110000010
110000001
110000000
00

10296. NHỮNG CON ĐƯỜNG CHẠY BỘ


Gord đang tập chạy marathon. Phía sau nhà của ông là một công viên với một mạng lưới
đường mòn chạy bộ rộng lớn kết nối các trạm nước. Gord muốn tìm các tuyến đường chạy bộ
ngắn nhất mà di chuyển dọc theo mỗi đường mòn ít nhất một lần.
INPUT
Inputbao gồm nhiều test. Trong mỗi test, dòng đầu tiên ghi hai số nguyên dương: n ≤15 (số
lượng các trạm nước), và m<1000( số lượng các con đường mòn). Mỗi đường mòn có được
miêu tả trên một dòng gồm ba số nguyên dương: số đầu tiên và số thứ hai,từ 1 đến n, là các
trạm nước ở đầu mút của đường mòn, số thứ ba là chiều dài của đường mòn, (tính theo đơn vị
mét). Giữa bất kỳ hai trạm có thể có nhiều hơn một đường mòn, mỗi đường mòn khác nhau chỉ
xuất hiện một lần trong input, đường mòn có thể được di chuyển theo cả hai hướng. Có thể
chuyển từ bất kỳ đường mòn nào sang bất cứ đường mòn nào khác bằng cách đi qua chuỗi các
trạm nước nối chúng với nhau. Tuyến đường củaGord có thể bắt đầu tại bất kỳ trạm nước nào,
và phải kết thúc tại trạm đó. Một dòng chứa duy nhất số 0 đánh dấu sự kết thúc của input
OUTPUT
Đối với mỗi test, cần có một dòng output chiều dài của tuyến đường chạy bộ của Gord.

Sample Input Sample Output


45 41
123
234
345
1 4 10
1 3 12

[4]
0

10364. HÌNH VUÔNG


Với một bộ que có các độ dài khác nhau, liệu có thể ghép chúng liên tiếp để tạo thành một hình
vuông?
INPUT
Dòng đầu tiên của input chứa N (số lượng test). Trong mỗi test, số đầu là số nguyên 4≤M ≤ 20
( là số lượng que). M số nguyên tiếp theo, mỗi số là chiều dài của một que(là một số nguyên từ
1 tới 10.000).
OUTPUT
Đối vớimỗi test, xuất ra một dòng "yes" nếu có thể ghép tạo thành một hình vuông, nếu không
in ra "no".

Sample Input Sample Output


3 yes
41111 no
5 10 20 30 40 50 yes
817264435

10651. TRÁO SỎI


Pebble solitairelà một trò chơi thúvị. Đây là một trò chơi gồm một bảng với nhiều ô nhỏ, ban
đầu trên tất cả các ô đều có một viên sỏi. Mục tiêu của trò chơi làloại bỏ viên sỏi ra khỏi bảng
càng nhiều càng tốt. Các viên sỏi biến mất khỏi bảng nhờ vào việc chuyển sỏi. Có thể di chuyển
nếu có ba khoang liền kề tạo thành một đường thẳng, chúng ta gọi chúng làA, B,và C, B ở giữa
A và C, trong đó A trống, Bvà C mỗi ô chứa một viên sỏi. Khi đó có thể di chuyển viên sỏi từ C
sang A,và loại bỏ các viên sỏi ở B ra khỏi bảng. Bạn có thể tiếp tục di chuyển các viên sỏi cho
đến khi không thể di chuyển được nữa.
Trong bài toán này, chúng ta tìm hiểu một phiên bản đơn giản của trò chơi này,cụ thể là một
bảng gồm 12 ô nằm dọc theo một đường thẳng. Trong phần mở đầu của mỗi trận đấu, một số ô
đã có sỏi. Nhiệm vụ của bạn là tìm ra một chuỗi các bước chuyển sỏi mà số sỏi trên bảng còn
lại là ít nhất.

INPUT
Input bắt đầu với một dòng chứa một
số nguyên dương n. Sau đó n ván
khác nhau. Mỗi ván bao gồm một
dòng đầu vào gồm đúng 12 kí tự, mô
tả mười hai ô của bảng. Mỗi kí tự
hoặc là '-' hoặc 'o'(ký tự 15 của bảng
chữ cái tiếng Anhthường). Kýtự “-“
(trừ) biểu thị một ô rỗng, trong khi ký tự 'o' biểu thị một ô có một viên sỏi trong đó. Có thể
trong input có ván cờ không có cách nào chuyển sỏi.
[5]
OUTPUT
Đối với mỗi ván, xuất ra số lượng sỏi tối thiểu có thể còn lại trên bảng.

Sample Input Sample Output


5 1

--- oo ------- 2

-o - o-oo ---- 3

-o ---- ooo --- 12

oooooooooooo 1

oooooooooo-o

10817. VẤN ĐỀ CỦA HIỆU TRƯỞNG


Hiệu trưởng của trường Xuân Trường đang xem xét việc tuyển dụng một số giáo viên mới cho
các môn học nhất định. Có một số giáo viên nộp đơn ứng cử. Mỗi giáo viên có thể dạy một hoặc
nhiều môn học. Hiệu trưởng muốn lựa chọn các ứng viên để mỗi môn học có thể có ít nhất hai
giáo viên giảng dạy với tổng chi phí nhỏ nhất.
INPUT
Input bao gồm nhiều test. Trong mỗi test, dòng đầu tiên chứa ba số nguyên dương S, M và N.
Trong đó S(≤ 8) làsố lượng môn học, M (≤ 20) là số lượnggiáo viên đang dạy, vàN (≤ 100) là số
người nộp đơn. Sau đó là M dòng, mỗi dòng mô tả một giáo viên đang giảng dạy. Số đầu tiên là
mức lương của người này (10000≤C≤50.000), tiếp theo là danh sách các môn học mà người
này có thể giảng dạy. Các môn học được đánh số từ 1 đến S. Bạn phải tiếp tục tuyển dụng tất cả
họ. Sau đó là N dòng,với thông tin chi tiết về các ứng viên theo cùng một định dạng. Input kết
thúc với case mà S=0. Test này không được xử lý.
OUTPUT
Đối với mỗi test, xuất ra chi phí tối thiểu để sử dụng các giáo viên tuân theo các ràng buộc
trên.

Sample Input Sample Output


222 60.000
10000 1
20000 2
30000 1 2
40000 1 2
000

10199. THÀNH LẬP ĐỘI THI ĐỐ VUI

[6]
Bạn được giao công việc thành lập các đội thi đố vu iMCACPCIQuizChampionship sắp tới. Có2*
N học sinh muốn tham dự và bạn có thể tạo thành N đội, mỗi đội gồm hai thành viên. Vì các
thành viên phải luyện tập cùng nhau, tất cả các sinh viên muốn lựa chọn một sinh viên gần
nhất có thể để ghép nhóm. Gọi x1 là khoảng cách giữa các ngôi nhà của nhóm 1, x2 là khoảng
cách giữa các ngôi nhà của nhóm 2 ... Bạn phải chọn sao cho tổng (x1+x2+x3+...+xN) nhỏ nhất.
INPUT
Sẽ có nhiều test. Trong mỗi test, dòng đầu chứa một số nguyên N(N≤8). 2*N dòng tiếp theo sẽ
cho các thông tin của học sinh. Mỗi dòng bắt đầu với tên của học sinh, tiếp theo tọa độ x và sau
đó tọa độ y. Cả x, y là các số nguyên trong khoảng 0 đến 1000. Tên học sinh sẽ chỉ bao gồm các
chữ thường và chiều dài tối đa là 20. Input được kết thúc bởi test có N bằng 0.
OUTPUT
Đối với mỗi test, xuất ra số thứ tự test, tiếp theo là tổng của khoảng cách, làm tròn đến 2 chữ
số thập phân. Thực hiện theo các mẫu định dạng chính xác.

Sample Input Sample Output


5 Case 1: 118.40
sohel 10 10 Case 2: 1.41
mahmud 20 10
sanny 5 5
prince 1 1
per 120 3
mf 6 6
kugel 50 60
joey 3 24
limon 6 9
manzoor 0 0
1
derek 9 9
jimmy 10 10
0

11218. KTV
Một bài hát rất phổ biến gần đây, bạn và nhóm bạn đã quyết định hát trong KTV. Bài hát có 3
ký tự, do đó, mỗi lần có 3 người hát cùng nhau (có 3 micro trong phòng). Có đúng 9 người, vì
vậy bạn đã quyết định mỗi người hát đúng một lần. Nói cách khác, tất cả mọi người được chia
thành 3 nhóm, để mỗi người đều thuộc một nhóm.
Tuy nhiên, một số người không muốn hát với một vài người khác, và một số kết hợp biểu diễn
hiện tồi tệ hơn so với một số cách kết hợp khác. Mỗi một cách kết hợp 3 người có một số điểm
nào đó. Hãy xác định tổng số điểm lớn nhất mà 3 nhóm có thể đạt được?
INPUT
Input bao gồm nhiều nhất là 1000 test. Trong mỗi test, dòng đầu chứa một số nguyên duy nhất
n (0<n<81) là số lượng các cách kết hợp cóthể. N dòng tiếp theo chứa 4số nguyên dương a,b,
c,s (1≤ a <b <c ≤ 9, 0 <s <10000), có nghĩa là 3 người (a,b,c) kết hợp được s điểm. Test cuối
cùng có n=0 và không cần được xử lý.
OUTPUT
Đối với mỗi test, in ra số test và điểm số lớn nhất. Nếu là không thể, in -1.
[7]
Sample Input Sample Output
3
Case 1: 6
1231
4562 Case 2: -1
7893
4
1231
1452
1673
1894
0

11391. VIÊN TRÒN TRONG BẢNG


Bạn cómột bảng gồm R hàng và C cột. Có N viên bi trong bảng. Mỗi ô của bảng có thể không có
hoặc có một viên bi. Một ô có thể có nhiều nhất là 8 ô kế cận. Một viên bi có thể nhảy qua bất
kỳ viên bi liền kề nào để tới một ô trống kế tiếp. Như vậy, một viên bi có thể nhảy thẳng tới ô
cách 2 theo bất kỳ hướng nào trong 8 hướng nếu ô đích trống và các ô nằm giữa ô nguồn và ô
đích có chứa một viên bi. Các viên bi không được nhảy ra bên ngoài bảng. Sau khi nhảy, viên bi
trong ô nằm giữa bị loại bỏ. Mục tiêu là để chắc chắn rằng sau N-1 bước nhảy chỉ còn đúng một
viên tròn trên bảng. Nhiệm vụ của bạn là đếm xem có bao nhiêu cách có thể đạt được mục tiêu
này.
INPUT
Input bao gồm một số test. Dòng đầu tiên của test chứa số nguyên duy nhất T là số lượng test.
Tiếp đó là T test. Trong mỗi test, dòng đầu là ba số nguyên dương R,Cvà N. Mỗi dòng trong số
N dòng tiếp theo chứa hai số nguyên x, y là tọa độ của một viên bi. Không có hai viên tròn cùng
một ô.
OUTPUT
Đối với mỗi test, xuất ra"Casex:n", trong đó x cho biết số thứ tự của test (bắt đầu từ 1) và n số
cách có thể đạt được mục tiêu.
Các ràng buộc: R, C≤4; 1 ≤x≤R; 1 ≤y≤C; -1 ≤i≤N

Sample Input Sample Output


3 Case 1: 1
121 Case 2: 0
11 Case 3: 2
338
23
21
12
33
32
31
11
13
333
31
22

[8]
12

11.472. SỐ ĐẸP
Một số trong hệ cơ số N là đẹp nếu tất cả các chữ số của số đó nằm trong khoảng từ 0 đến N-
1và chênh lệch giữa bất kỳ hai chữ số liền kề là 1. Ví dụ, 9876543210 là số đẹp 10-. Bạncần
phải xác định số số đẹp có M chữ số. Lưu ý: Không có chữ số 0 ở đầu một số đẹp.
INPUT
Dòng đầu tiên là một số nguyên T(T<100) là số lượng test. Mỗi test nằm trên một dòng chứa
hai số nguyên N và M (2≤N≤10& 0≤M≤100).
OUTPUT
Đối với mỗi test, tính ra số số đẹp trong hệ cơ số N, có không quá M chữ số. In ra phần dư khi
chia số này cho 1000000007.

Sample Input Sample Output


3 3
24 31
37 1
10 10

12063. 0 VÀ 1
Số nhị phân và mô hình các bit luôn hấp dẫn các lập trình viên máy tính. Trong bài toán này,
bạn cần đếm số các số nhị phân có các tính chất sauđây:
 Số có đúng N bit và không có số không ở đầu.
 Số số 0 bằng số số 1.
 Số là bội của K
INPUT
Dòng đầu tiên số T - số lượng các test, T (1≤ T≤ 100). Sau đó, là T test, mỗi test nằm trên một
dòng. Mỗi test gồm hai số nguyên, N (1≤ N≤ 64) vàK(0 ≤ K≤ 100).
OUTPUT
Đối với mỗi tập hợp input vàoin số test case đầu tiên.Sauđó, insố lượngcác số nhị phân có tính
chất mà chúng ta đã đề cập.

Sample Input Sample Output


5 Case 1: 1
63 Case 2: 3
64 Case 3: 6
62 Case 4: 1662453
26 3 Case 5: 465428353255261088
64 2

Minh họa: Đây là một bảng hiển thị số có thể cho một số các test case mẫu:
[9]
63 64 62
101010 111000 111000
110100 110100
101100 101100
110010
101010
100110

[10]

You might also like