You are on page 1of 5

BÀI TẬP NÂNG CAO PHƯƠNG PHÁP DUYỆT

(16/11/2022)

Bài Tên bài Tên file chương trình

1 Số đối xứng PALIND.*

2 Nối dây LINES.*

3 Nối dây LIGHTING.*

4 Fillnum FILLNUM.*

5 Căn đĩa BALANCES

Các em hãy lập trình giải các bài toán sau đây:
SỐ ĐỐI XỨNG
Một số nguyên dương 𝑥 được gọi là số đối xứng nếu biểu diễn thập phân của 𝑥 không thay
đổi nếu ta viết theo thứ tự ngược lại. Ví dụ các số 121, 8998, 86468 là các số đối xứng trong
khi đó các số 10, 123, 9990 không phải là số đối xứng.
Yêu cầu: Cho số nguyên dương 𝑛, hãy cho biết có bao nhiêu số đối xứng trong phạm vi từ 1
tới 𝑛.
Dữ liệu: Vào từ file văn bản PALIND.INP gồm 1 dòng chứa số nguyên dương 𝑛 ≤ 10100
Kết quả: Ghi ra file văn bản PALIND.OUT một số nguyên duy nhất là số lượng các số đối xứng
trong phạm vi từ 1 tới 𝑛.
Ví dụ

PALIND.INP PALIND.OUT
135 22
3927 137
90009 999
NỐI DÂY
Cho hai đường thẳng song song nằm ngang 𝑎 và 𝑏. Trên mỗi đường thẳng, người ta chọn lấy
𝑛 điểm phân biệt và gán cho mỗi điểm một số nguyên dương là nhãn của điểm đó:
Trên đường thẳng 𝑎, điểm thứ 𝑖 (theo thứ tự từ trái qua phải) được gán nhãn là 𝑎𝑖 .
Trên đường thẳng 𝑏, điểm thứ 𝑗 (theo thứ tự từ trái qua phải) được gán nhãn là 𝑏𝑗 .
Ở đây (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) và (𝑏1 , 𝑏2 , … , 𝑏𝑛 ) là những hoán vị của dãy số (1,2, … , 𝑛)
Yêu cầu: Hãy chỉ ra một số tối đa các đoạn thẳng thoả mãn:
Mỗi đoạn thẳng phải nối hai điểm có cùng một nhãn: một điểm trên đường thẳng 𝑎 và một
điểm trên đường thẳng 𝑏.
Các đoạn thẳng đôi một không có điểm chung
2 3 1 5 6 4
𝑎

3 2 5 6 1 4

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


Dòng 1: Chứa số nguyên dương 𝑛 ≤ 105
Dòng 2: Chứa 𝑛 số theo thứ tự là 𝑎1 , 𝑎2 , … , 𝑎𝑛
Dòng 3: Chứa 𝑛 số theo thứ tự là 𝑏1 , 𝑏2 , … , 𝑏𝑛
Kết quả: Ghi ra file văn bản LINES.OUT
Dòng 1: Ghi số 𝑘 là số đoạn thẳng nối được.
Dòng 2: Ghi 𝑘 nhãn của các đoạn thẳng được chọn (nhãn của mỗi đoạn thẳng là nhãn của
điểm đầu mút)
Các số trên một dòng của Input / Output file được/phải ghi cách nhau ít nhất một dấu cách.
Ví dụ:

LINES.INP LINES.OUT

6 4
231564 3456
325614
CHIẾU SÁNG
Bản đồ công viên DisneyLand là một hình chữ nhật kích thước 𝑚 × 𝑛 được chia thành lưới ô
vuông đơn vị 𝑚 hàng 𝑛 cột. Các hàng của lưới được đánh số từ 1 tới 𝑚 và các cột của lưới
được đánh số từ 1 tới 𝑛, ô nằm ở hàng 𝑖, cột 𝑗 được gọi là ô (𝑖, 𝑗). Người ta đặt 𝑘 khu vui chơi
vào một số ô của lưới, mỗi khu vui chơi nằm hoàn toàn trong một ô và có thể có nhiều khu
vui chơi nằm trong cùng một ô.
Hệ thống chiếu sáng của công viên gồm có 𝑚 đèn loại 𝐴: 𝑎1 , 𝑎2 , … , 𝑎𝑚 và 𝑛 đèn loại 𝐵:
𝑏1 , 𝑏2 , … , 𝑏𝑛 . Đèn 𝑎𝑖 có thể chiếu sáng tất cả các ô trên hàng 𝑖 và đèn 𝑏𝑗 có thể chiếu sáng tất
cả các ô trên cột 𝑗 (1 ≤ 𝑖 ≤ 𝑚; 1 ≤ 𝑗 ≤ 𝑛).
Yêu cầu: Hãy bật sáng một số ít nhất các đèn để chiếu sáng toàn bộ các ô có khu vui chơi.
Dữ liệu: Vào từ file văn bản LIGHTING.INP
Dòng 1: Chứa ba số nguyên dương 𝑚, 𝑛, 𝑘 ≤ 105
𝑘 dòng tiếp theo, dòng thứ 𝑖 ghi chỉ số hàng và chỉ số cột của khu vui chơi thứ 𝑖.
Kết quả: Ghi ra file văn bản LIGHTING.OUT
Dòng 1 ghi số đèn loại 𝐴 (𝑝) và số đèn loại 𝐵 (𝑞) cần bật sáng
Dòng 2 ghi chỉ số của 𝑝 đèn loại 𝐴 được bật sáng, tiếp theo là chỉ số của 𝑞 đèn loại 𝐵 được
bật sáng
Các số trên một dòng của Input/Output files được/phải ghi cách nhau ít nhất một dấu cách.
Ví dụ:

LIGHTING.INP LIGHTING.OUT

558 22 1 2 3 4 5

11 1434 1
2
12
3
13 4
23 5

33
44
45
54
FILLNUM
Cho một xâu ký tự 𝑆 gồm 𝑛 chữ số 0, các ký tự trong xâu 𝑆 được đánh số từ 1 tới 𝑛 theo thứ
tự từ trái qua phải. Xét lệnh 𝐹𝑖𝑙𝑙(𝑖, 𝑗, 𝑐): Trong đó 𝑖, 𝑗 là các số nguyên dương, 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛
và 𝑐 là một chữ số ∈ {0,1,2, … 9}: Điền ký tự 𝑐 vào xâu 𝑆 bắt đầu từ vị trí 𝑖 tới vị trí 𝑗. Các chữ
số mới điền vào sẽ đè lên các chữ số đang có trong xâu 𝑆.
Ví dụ với 𝑛 = 6
𝐹𝑖𝑙𝑙(4,6,5)
000000 → 000555
𝐹𝑖𝑙𝑙(1,3,1)
000555 → 111555
𝐹𝑖𝑙𝑙(3,4,9)
111555 → 119955
Cho trước số nguyên dương 𝑘, người ta thực hiện lần lượt 𝑚 lệnh 𝐹𝑖𝑙𝑙 để được xâu 𝑆 là biểu
diễn thập phân của một số tự nhiên, hãy tìm số dư của số tự nhiên đó cho 𝑘.
Dữ liệu: Vào từ file văn bản FILLNUM.INP
Dòng 1 chứa ba số nguyên dương 𝑛, 𝑚, 𝑘 (𝑚 ≤ 105 ; 𝑛 ≤ 107 ; 𝑘 ≤ 109 )
𝑚 dòng tiếp theo, dòng thứ 𝑝 chứa ba số nguyên 𝑖𝑝 , 𝑗𝑝 , 𝑐𝑝 cho biết lệnh 𝐹𝑖𝑙𝑙 thứ 𝑝 là
𝐹𝑖𝑙𝑙(𝑖𝑝 , 𝑗𝑝 , 𝑐𝑝 ) (1 ≤ 𝑖𝑝 ≤ 𝑗𝑝 ≤ 𝑛; 0 ≤ 𝑐𝑝 ≤ 9).
Các số trên một dòng của Input file được ghi cách nhau ít nhất một dấu cách
Kết quả: Ghi ra file văn bản FILLNUM.OUT một số nguyên duy nhất là số dư tìm được
Ví dụ

FILLNUM.INP FILLNUM.OUT

6 3 123 30
465
131
349
CÂN ĐĨA
Cho một cân đĩa và 𝑛 quả cân đánh số từ 1 tới 𝑛, quả cân thứ 𝑖 có khối lượng là 𝑖. Với một vật
khối lượng 𝑚, người ta đặt vật đó vào đĩa cân bên trái sau đó đặt thêm một số quả cân lên
hai đĩa cân sao cho cân thăng bằng, từ đó xác định khối lượng của vật.
Hai cách cân được gọi là khác nhau nếu tập các quả cân ở đĩa trái trong hai cách khác nhau
hoặc tập các quả cân ở đĩa phải trong hai cách khác nhau.
Ví dụ với 𝑛 = 4, 𝑚 = 2, ta có 7 cách cân:

2 2 2 3 1 4

2 1 3 2 4 1 2 3

2 2 4 2 1 3 2 4

2 2 1 3

Yêu cầu: Đếm số cách cân vật đã cho.


Dữ liệu: Vào từ file văn bản BALANCE.INP gồm 1 dòng chứa hai số nguyên dương 𝑛, 𝑚 ≤ 100
Kết quả: Ghi ra file văn bản BALANCE.OUT một số nguyên duy nhất là số cách cân vật đã cho
Ví dụ

BALANCE.INP BALANCE.OUT

42 7

You might also like