如果给出2个整数,则说出a和b。找到b个正整数,使得它们的总和等于a,并且它们的乘积是最大的。我们必须将最大产品作为输出返回。
约束是 -
0℃; = b将= 20
b将= A< = 100
必须使用哪种算法或方法来解决这个问题?
答案 0 :(得分:1)
假设我们有两个整数x,y,这样x<收率
- 1 2 3 4 5
这就是说我们可以通过增加x和减少y来使产品更大。
因此,最佳答案将使所有数字彼此相差1个单位(否则我们可以得到更好的答案)。
所以我们的数字都等于x或x + 1(对于某些x尚待确定)。假设我们有更大数字的k,我们知道必须有较小数量的b-k。我们现在可以按如下方式计算x和k:
(x+1)*(y-1) = x*y + y - x - 1 >= x*y
因此x = a // b且k = a%b。
最终产品为x **(b-k)*(x + 1)** k。
(请注意,如果sum等于a且b> a,则问题似乎有些奇怪,因为用正整数实现这是不可能的。)