You are on page 1of 4

CẮT GIẤY

Bờm muốn đi mua một mảnh giấy hình chữ nhật để có thể cắt ra từ đó ba mảnh giấy hình chữ nhật kích thước
khác với lần lượt là 𝑎1 × 𝑏1 , 𝑎2 × 𝑏2 , 𝑎3 × 𝑏3 sao cho không để lại phần thừa. Hỏi có bao nhiêu kích thước giấy
khác nhau mà Bờm có thể mua.
Hai kích thước giấy 𝑚1 × 𝑛1 và 𝑚2 × 𝑛2 được gọi là như nhau nếu min(𝑚1 , 𝑛1 ) = min(𝑚2 , 𝑛2 ) và max(𝑚1 , 𝑛1 ) =
max(𝑚2 , 𝑛2 )
Dữ liệu: Vào từ file văn bản RECTPAPERS.INP
Dòng 1 chứa số nguyên dương 𝑇 ≤ 105 là số test
𝑇 dòng tiếp theo, mỗi dòng chứa 6 số nguyên dương 𝑎1 , 𝑏1 , 𝑎2 , 𝑏2 , 𝑎3 , 𝑏3 ≤ 109 ứng với một test
Kết quả: Ghi ra file văn bản RECTPAPERS.OUT
Ứng với mỗi test, ghi ra số kích thước giấy Bờm có thể mua trên một dòng.
Ví dụ

Trang 1
MỜI KHÁCH DỰ TIỆC
Công ty trách nhiệm hữu hạn "Vui vẻ" có 𝑛 cán bộ đánh số từ 1 tới 𝑛. Cán bộ thứ 𝑖 có đánh giá độ vui tính là ℎ𝑖 .
Ngoại trừ giám đốc công ty, mỗi người đều có một thủ trưởng trực tiếp của mình.

Bạn cần giúp công ty mời một nhóm cán bộ đến dự dạ tiệc “Những người thích đùa” sao cho tổng đánh giá độ vui
tính của những người dự tiệc là lớn nhất, với yêu cầu: trong số những người được mời không đồng thời có mặt
nhân viên cùng thủ trưởng trực tiếp của người đó.

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


Dòng đầu tiên ghi số cán bộ công ty: 𝑛 (2 ≤ 𝑛 ≤ 105 )
𝑛 dòng tiếp theo, dòng thứ 𝑖 gồm hai số tự nhiên 𝑏𝑖 , ℎ𝑖 cho ta thông tin, người thứ 𝑖 có thủ trưởng trực tiếp là
𝑏𝑖 và độ vui tính là ℎ𝑖 (0 ≤ ℎ𝑖 ≤ 105 ). Nếu như 𝑏𝑖 = 0 thì ta hiểu 𝑖 là giám đốc công ty.

Kết quả: Ghi ra file văn bản GUEST.OUT


Dòng 1: Ghi số người được mời (𝑘) và tổng độ vui tính của những người đó (𝑚)
𝑘 dòng tiếp, mỗi dòng ghi số hiệu một người được mời tới dạ tiệc.

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
Dữ liệu vào đảm bảo không tồn tại một dãy 𝑥1 , 𝑥2 , … 𝑥𝑝 = 𝑥1 mà người 𝑥𝑖 là thủ trưởng trực tiếp của người 𝑥𝑖+1
(∀𝑖: 1 ≤ 𝑖 < 𝑝) .
Không nhất thiết phải mời giám đốc công ty

Ví dụ

Trang 2
RÚT GỌN DÃY SỐ
Cho dãy 𝑛 số nguyên dương 𝐴 = (𝑎0 , 𝑎1 , … , 𝑎𝑛−1 ). Với mỗi chỉ số 𝑖, người ta định nghĩa phép rút gọn 𝑅(𝑖) như
sau:
Nếu 𝑖 < 𝑛 − 1, phép rút gọn 𝑅(𝑖) sẽ thay 𝑎𝑖 bởi 𝑎𝑖 − 𝑎𝑖+1 rồi xóa phần tử 𝑎𝑖+1 .
Nếu 𝑖 = 𝑛 − 1, phép rút gọn 𝑅(𝑖) sẽ thay 𝑎𝑛−1 bởi 𝑎𝑛−1 − 𝑎0 rồi xóa phần tử 𝑎0 .
Sau mỗi lần rút gọn, số phần tử của dãy (𝑛) giảm đi 1 và các phần tử của dãy 𝐴 được đánh số lại từ 0 bắt đầu từ
phần tử mang chỉ số nhỏ nhất.
Sau 𝑛 − 1 lần rút gọn dãy 𝐴, ta sẽ thu được duy nhất một số nguyên…
𝑅(2) 𝑅(3) 𝑅(0) 𝑅(0)
Ví dụ: (12,10,4,3,5) → (12,10,1,5) → (10,1, −7) → (9, −7) → (16)
Yêu cầu: Cho số nguyên 𝑉, hãy tìm thứ tự thực hiện 𝑛 − 1 phép rút gọn đối với dãy đã cho để số cuối cùng thu
được là 𝑉.
Dữ liệu: Vào từ file văn bản REDUCE.INP
Dòng 1 chứa hai số nguyên 𝑛 và 𝑉, (1 ≤ 𝑛 ≤ 200; 1 ≤ 𝑉 ≤ 109 )
Dòng 2 chứa 𝑛 số nguyên 𝑎0 , 𝑎1 , … , 𝑎𝑛−1 , (1 ≤ 𝑎𝑖 ≤ 200, ∀𝑖)
Dữ liệu vào luôn đảm bảo có thể tìm ra phương án theo yêu cầu
Kết quả: Ghi ra file văn bản REDUCE.OUT 𝑛 − 1 số tương ứng với vị trí thực hiện 𝑛 − 1 phép rút gọn theo đúng
thứ tự thi hành.
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ụ:

Trang 3
TRỐN TÌM
Có 𝑛 bé trường mầm non SuperKids đang chơi trốn tìm trong một khu rừng. Có 𝑛 vị trí trốn, các vị trí trốn và các
bé được đánh số từ 0 tới 𝑛 − 1, ban đầu bé thứ 𝑖 ở vị trí 𝑖 (∀𝑖: 0 ≤ 𝑖 < 𝑛).
Cứ sau mỗi giây, các bé lại chuyển vị trí, các bé đang ở vị trí 𝑖 sẽ chuyển sang trốn ở vị trí 𝑓𝑖 (𝑓0 , 𝑓1 , … , 𝑓𝑛−1 là dãy
số nguyên cho trước, 0 ≤ 𝑓𝑖 < 𝑛).
Sau 𝑚 giây, cô giáo muốn tìm và tập hợp lại các bé, cô cần xác định chính xác mỗi bé đang ở vị trí nào, bạn hãy
giúp cô giáo nhé.
Dữ liệu: Vào từ file văn bản POSITION.INP
Dòng 1 chứa hai số nguyên dương 𝑛 ≤ 105 ; 𝑚 ≤ 109
Dòng 2 chứa 𝑛 số nguyên dương 𝑓0 , 𝑓1 , … , 𝑓𝑛−1 (0 ≤ 𝑓𝑖 < 𝑛; ∀𝑖)
Kết quả: Ghi ra file văn bản POSITION.OUT 𝑛 số nguyên là vị trí của các bé từ 0 tới 𝑛 − 1 theo đúng thứ tự đó tại
thời điểm cô giáo đi tìm (𝑚 giây tính từ lúc bắt đầu)
Các số trên một dòng của input/output được/phải ghi cách nhau bởi dấu cách.
Ví dụ

Trang 4

You might also like