求最大乘积的算法方法
Algorithmic approach to find Maximal Product
如果给定2个整数,比如a和b。找到b个正整数,使它们的和等于a,并且它们的乘积最大。我们必须退回最大的产品作为产量。
限制是-
0<b<20
b<a<100
必须使用什么样的算法或方法来解决这个问题?
假设我们有两个整数x,y,使得x<y.
(x+1)*(y-1) = x*y + y - x - 1 >= x*y
这意味着我们可以通过增加x和减少y来使产品更大。
因此,最优答案将使所有数字彼此在1个单位内(否则我们可以得到更好的答案)。
因此,我们的数字都等于x或x+1(对于一些尚未确定的x)。假设我们有k个较大的数,我们知道一定有b-k个较小的数。我们现在可以计算x和k如下:
x*(b-k)+k*(x+1) = a
b*x - k*x + k*x + k = a
b*x + k = a
因此x=a//b并且k=a%b。
最终产品将是x**(b-k)*(x+1)**k。
(注意,如果sum等于a,b>a,这个问题似乎有点奇怪,因为这在正整数中是不可能实现的。)
相关文章:
- 学习数据结构和算法的简单方法
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 迭代快速排序方法的分区算法问题
- 有没有一种方法可以使用弗洛伊德-沃歇尔算法给出最短路径,其中存在负权重循环而不允许重叠边缘?
- 为一群追逐兔子的狐狸创建蜂群算法的最佳方法
- 分流场算法C++方法之间未正确传递?
- 运行实验的好方法是C 中算法的内存使用情况
- 寻找一种单一的定时方法来测试各种算法,不包括它们的输入
- 实现 15 谜题算法的正确方法是什么
- cv::absdiff() 使用什么方法/算法
- 正确的方法比较两个指向算法中使用的指向算法
- 最有cpu效率的方法是使用std::算法和变量函数模板的参数
- 是否有一种更有效的方法来执行此算法
- 在图算法中,确定是否访问节点的最佳方法是什么?
- 所有的组合算法和解决C++问题的一般方法
- 是否只有一种方法可以实现气泡排序算法
- 算法:计算单词列表频率的更好方法
- 使用stl::map的std::map旋转方法或算法
- 求最大乘积的算法方法
- 在编程中,这两项任务中的任何一项都有算法方法吗