您会教一类学生,他们对椅子的布置有有趣的偏好。他们对椅子的布置有3个非常具体的要求:
它们大多数都以矩形排列,即使这意味着有些椅子是空的。
空椅子必须尽可能少。
它们必须尽可能“方形”。矩形度取决于矩形的宽度和高度之间的距离,越低越好。例如,矩形
4x7
的正方形度为3。
更具体地说,布置的“分数”是宽度和高度之间的距离加上将要空的椅子数量。
让我们举个例子。假设您有13个学生。您可以通过以下任何一种方式安排椅子:
1x13
2x7
3x5
4x4
1x13
不是很方形。实际上,1和13相距12点,因此我们给此排列12点。它还有0个空椅子,所以我们加0分,使这种安排的得分为12。
2x7
当然更好。2和7仅相距5,所以我们给这种安排5分。但是,如果实际上安排了两排,每排有七把椅子,那将占用14把椅子,这意味着一把椅子将是空的。因此,我们加1分,使该安排获得6分。
我们也可以做3x5
。3和5相距2,所以+2分。它需要15张椅子,这意味着我们要再增加两把椅子,所以再加上2分,得到4分。
最后一个选择4x4
。4和4相距0,因此我们给了+0分。4x4需要16张椅子,所以3张椅子空了,总分3。这是最佳的解决方案。
如果是平手,最佳的解决方案是空椅子少的人。
挑战
您必须编写一个程序或函数,该程序或函数需要一个整数,并为该数量的学生输出最佳的椅子布置。IO可以采用任何合理的格式。这是从1到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)
像往常一样,这是代码高尔夫球,因此存在标准漏洞,而获胜者是最短的答案(以字节为单位)。