Bạn dạy một lớp học sinh với những sở thích thú vị về cách sắp xếp ghế của họ. Có 3 yêu cầu rất cụ thể mà họ có về cách sắp xếp ghế:
Hầu hết chúng được sắp xếp trong một hình chữ nhật, ngay cả khi điều đó có nghĩa là một số ghế trống.
Phải có càng ít ghế trống càng tốt.
Chúng phải càng "vuông" càng tốt. Squarey-ness được xác định bởi khoảng cách giữa chiều rộng và chiều cao của hình chữ nhật, thấp hơn là tốt hơn. Ví dụ, một hình chữ nhật
4x7
có số vuông là 3.
Cụ thể hơn, "điểm số" của sự sắp xếp là khoảng cách giữa chiều rộng và chiều cao cộng với số ghế sẽ trống.
Hãy lấy một ví dụ. Giả sử bạn có 13 sinh viên. Bạn có thể sắp xếp những chiếc ghế theo bất kỳ cách nào sau đây:
1x13
2x7
3x5
4x4
1x13
không phải là rất vuông. Trong thực tế, 1 và 13 cách nhau 12, vì vậy chúng tôi cho cách sắp xếp này 12 điểm. Nó cũng có 0 ghế trống, vì vậy chúng tôi thêm 0 điểm, cho sự sắp xếp này điểm 12. Không phải là tuyệt vời.
2x7
chắc chắn là tốt hơn 2 và 7 chỉ cách nhau 5 điểm, vì vậy chúng tôi cho sự sắp xếp này 5 điểm. Tuy nhiên, nếu bạn thực sự sắp xếp 2 hàng bảy ghế, thì sẽ mất 14 ghế, nghĩa là một ghế sẽ trống. Vì vậy, chúng tôi thêm một điểm, cho điểm sắp xếp này là 6 điểm.
Chúng tôi cũng có thể làm 3x5
. 3 và 5 cách nhau 2 điểm, vì vậy +2 điểm. Phải mất 15 ghế, có nghĩa là chúng tôi sẽ có thêm hai ghế, vì vậy thêm 2 điểm nữa, cho số điểm là 4.
Tùy chọn cuối cùng , 4x4
. 4 và 4 cách nhau 0, vì vậy chúng tôi cho điểm +0 này. 4x4 mất 16 ghế, vì vậy 3 ghế trống, với tổng số điểm là 3. Đây là giải pháp tối ưu.
Trong trường hợp cà vạt, giải pháp tối ưu là cái có ít ghế trống.
Các thách thức
Bạn phải viết một chương trình hoặc hàm lấy số nguyên và đưa ra cách sắp xếp ghế tối ưu cho số học sinh đó. IO có thể ở bất kỳ định dạng hợp lý. Đây là đầu ra mẫu cho bất kỳ số lượng sinh viên từ 1 đến 100:
1: (1, 1)
2: (1, 2)
3: (2, 2)
4: (2, 2)
5: (2, 3)
6: (2, 3)
7: (3, 3)
8: (3, 3)
9: (3, 3)
10: (2, 5)
11: (3, 4)
12: (3, 4)
13: (4, 4)
14: (4, 4)
15: (4, 4)
16: (4, 4)
17: (3, 6)
18: (3, 6)
19: (4, 5)
20: (4, 5)
21: (3, 7)
22: (5, 5)
23: (5, 5)
24: (5, 5)
25: (5, 5)
26: (4, 7)
27: (4, 7)
28: (4, 7)
29: (5, 6)
30: (5, 6)
31: (4, 8)
32: (4, 8)
33: (6, 6)
34: (6, 6)
35: (6, 6)
36: (6, 6)
37: (5, 8)
38: (5, 8)
39: (5, 8)
40: (5, 8)
41: (6, 7)
42: (6, 7)
43: (5, 9)
44: (5, 9)
45: (5, 9)
46: (7, 7)
47: (7, 7)
48: (7, 7)
49: (7, 7)
50: (5, 10)
51: (6, 9)
52: (6, 9)
53: (6, 9)
54: (6, 9)
55: (7, 8)
56: (7, 8)
57: (6, 10)
58: (6, 10)
59: (6, 10)
60: (6, 10)
61: (8, 8)
62: (8, 8)
63: (8, 8)
64: (8, 8)
65: (6, 11)
66: (6, 11)
67: (7, 10)
68: (7, 10)
69: (7, 10)
70: (7, 10)
71: (8, 9)
72: (8, 9)
73: (7, 11)
74: (7, 11)
75: (7, 11)
76: (7, 11)
77: (7, 11)
78: (9, 9)
79: (9, 9)
80: (9, 9)
81: (9, 9)
82: (7, 12)
83: (7, 12)
84: (7, 12)
85: (8, 11)
86: (8, 11)
87: (8, 11)
88: (8, 11)
89: (9, 10)
90: (9, 10)
91: (7, 13)
92: (8, 12)
93: (8, 12)
94: (8, 12)
95: (8, 12)
96: (8, 12)
97: (10, 10)
98: (10, 10)
99: (10, 10)
100: (10, 10)
Như thường lệ, đây là môn đánh gôn, do đó, sơ hở tiêu chuẩn được áp dụng và người chiến thắng là câu trả lời ngắn nhất tính bằng byte.