Ai giải giúp mình bài này với trên C nhé
Anh Danh có rất nhiều em gái nuôi. Các em gái nuôi của anh Danh rất thích ăn kẹo. Anh Danh có 3 loại kẹo với 3 màu lần lượt là đỏ, vàng, xanh. Anh Danh phải chia kẹo cho các em gái dễ thương của mình. Tuy nhiên các em gái rất kiêu kì và hay làm nũng. Vì vậy anh Danh phải chia kẹo cho các em theo quy tắc sau. Mỗi em gái nuôi chỉ nhận 3 viên kẹo cùng màu hoặc 3 viên kẹo khác màu nhau. Nói cách khác, anh Danh phải chia hoặc là 3 viên đỏ, hoặc 3 viên vàng, hoặc 3 viên xanh, hoặc 1 đỏ 1 vàng 1 xanh cho một em gái của mình. Biết rằng anh Danh có d viên kẹo đỏ, v viên kẹo vàng và x viên kẹo xanh. Hãy tính xem anh Danh có thể chia kẹo cho tối đa bao nhiêu em gái nuôi với chừng đó viên kẹo… Dữ liệu vào: Ba số d, v, x tương tứng số kẹo đỏ vàng xanh (0 < d, v, x <= 1000000000) Dữ liệu ra: Số lượng tối đa các em gái nuôi được anh Danh chia kẹo.
mình nghĩ kết qủa sẽ là thế này
t = min(d,v,x);
n = t + (d - t)/3 + (v - t)/3 + (x - t)/3
hinh nhu sai roi, neu 3, 5, 5 sẽ là 4, còn cái cua bạn là 3:slight_smile:
thử
còn lại biện luận cho 27 trường hợp cho d,v,x:
if trong 3 số (d,v,x) có 2 số là (0,0) hay (0,1) thì ko làm gì cả (16 trường hợp)
else if trong 3 số (d,v,x) có 1 số là 1 thì s += 1 (7 trường hợp)
else if trong 3 số (d,v,x) có số 1 số 0 thì s += 1 (3 trường hợp)
else if (d,v,x) == (2,2,2) thì s += 2 (1 trường hợp)
cách này là đầu tiên chia 3 viên kẹo cùng màu cho tới khi ko còn chia được nữa, thì d,v,x còn lại từ 0-2 viên mỗi loại màu. Nếu còn 0,2,2 thì ta có thể lấy lại 3 viên kẹo cùng màu để thành 3,2,2, chia được cho 2 người, bỏ 1 người => s += 1. Nếu còn 0,0,2 chẳng hạn thì dù có lấy lại thành 3,3,2 thì thêm 2 nhưng mất 2 nên khỏi làm. Cứ thế lý luận cho các trường hợp còn lại.
ko biết chứng minh nó đúng hay sai, chạy thử đúng thì xong, còn sai tính tiếp
cam on bạn nha, để mình test thử:grinning:
Đang ngủ thì nghĩ ra cách làm này không biết đúng không
Ý tưởng:
+Tìm số lượng chia tối đa không quan tâm tới điều kiện. Coi như số lượng đó là số kẹo từng màu trung bình phải mất. => Cách chia mỗi loại 1 viên
+Trừ số kẹo từng loại cho số trên.
+Giờ tiến hành chia kẹo lại (lấy thằng dư bù cho thằng thiếu) điều kiện dừng: đến khi nào không còn loại kẹo nào âm.
3, 5, 5 làm sao ra được 4 -_-
4 đó
3,5,5 chứ có phải 2,5,5 đâu
của a là 2, 5, 5… trường hợp 3, 5, 5 cơ mà a @@
Cơ mà nếu 3,5,5 thì đáp án vẫn là 4
1 1 1
1 1 1
0 0 3
0 3 0
1 0 0
3 5 5
Mình làm xong bài này, tưởng hoàn hảo cho đến khi nhìn lại comment của bạn @tntxtnt, vấn đề trở nên phức tạp rồi
Dư cũng được thì phải mà. Chứ đâu nhất thiết d + v + x phải chia hết cho 3