Lập chương trình giải các bài toán sau đây:
Bài 1. BRC
Cần chia bánh cho người. Ban đầu mỗi cái bánh là một phần, chỉ dùng một dao cắt bánh, mỗi thao tác cắt chỉ được chia một phần bánh thành hai phần với tỷ lệ tùy ý.
Yêu cầu: Dùng ít thao tác cắt nhất để chia bánh thành các phần cho người, mỗi phần thuộc về đúng một người và lượng bánh mỗi người nhận được là bằng nhau.
Dữ liệu:
• Một dòng duy nhất ghi hai số và , cách nhau bởi một dấu cách,
Kết quả:
• Ghi ra số thao tác cắt ít nhất thỏa yêu cầu.
Ví dụ:
input output Giải thích
3 5 4
Bài 2. PNM
Ngôn ngữ PNM thường được sử dụng để trình diễn phông chữ trong máy tính hoặc dùng để in thử nghiệm trong các thiết bị in ấn. Một từ hoặc một câu gọi là PNM nếu các chữ cái của bảng chữ cái Latin đều xuất hiện ít nhất một lần trong từ hoặc câu đó.
Cho một chuỗi các kí tự (bao gồm cả in thường và in hoa) thuộc bảng chữ cái Latin, kiểm tra xem chuỗi này có là PNM hay không?
Dữ liệu:
• Dòng đầu ghi số nguyên dương là số kí tự trong chuỗi
• Dòng tiếp theo ghi kí tự thuộc bảng chữ cái Latin.
Kết quả:
• Ghi YES nếu nó là ngôn ngữ PNM, ghi NO trong trường hợp ngược lại.
Ví dụ:
input output input output
12
toosmallword NO 35
TheQuickBrownFoxJumpsOverTheLazyDog YES
Ràng buộc: Có 60% số test ứng với 60% số điểm có
Bài 3. MXM
Cho số nguyên dương . Tìm bội số lớn nhất của số sau khi xáo trộn các chữ số của số .
Dữ liệu:
• Một dòng duy nhất ghi số ,
Kết quả:
• Ghi kết quả tìm được trên một dòng, nếu không tìm được ghi -1
Ví dụ:
input output input output input output
30 30 102 120 2931 -1
Ràng buộc:
• Có 40 % số test ứng với 40% số điểm có
• Có 30% số test khác ứng với 30% số điểm có
• Có 20% số test khác ứng với 20% số điểm có
• Có 10% số test khác ứng với 10% số điểm có