传送门:https://www.luogu.com.cn/problem/P4157
借鉴大佬:https://blog.csdn.net/oampamp1/article/details/108919448
题意
给一个整数N,将他拆成若干整数,求他们乘积最大值。
思路
先将题目转化一下:先将题目转化一下:
已知n∑i=1xi=N,求maxn∏i=1xi(n表示xi有几项)已知n∑i=1xi=N,求maxn∏i=1xi(n表示xi有几项)
首先根据均值不等式(调和≤几何≤算术≤平方): n∑ni=11xi≤n√n∏i=1xi≤∑ni=1xin≤n√∑ni=1x2in
所以可以得到: ∑ni=1xin≥n√n∏i=1xi
(∑ni=1xin)n≥n∏i=1xi
观察上式,要使乘积最大,那需要尽量取等号,所以xi要尽量平均,所以得到下式:
(Nn)n=n∏i=1xi
令y=(Nn)n,两边同时取对数得:
lny=nlnN−nlnn
两边同时对n求导得:
y′y=lnN−lnn−1
得y′=(lnN−lnn−1)(Nn)n
令y′=0,因为(Nn)n>0,所以lnN−lnn−1=0,即:
n=elnN−1=Ne
由于n是在整数域里,所以n只有两个选择N2和N3,那么该取哪一个呢?
刚开始的∏ni=1xi=(Nn)n=2N2或3N3,现在就看哪个大。
根据上图可知,2N2<3N3,当然也可以手动算一下。
所以得∏ni=1xi=3N3最大,即优先取3,没有3取2,总之,推导到最后就是个憨憨题。总结一下:
让Nmod3:
−Nmod3=0,全部拆成3,ans=3N3 −Nmod3=1,拿出一个3然后加1组成4,其他都为3,ans=3N−13−1∗4 −Nmod3=2,拿出一2,其他都为3,ans=3N−23∗2
由于答案爆longlong,所以用JAVA大数,这不比高精度香吗?
Code(67MS)
1 |
|
本文作者:jujimeizuo
本文地址: https://blog.jujimeizuo.cn/2020/10/08/luogu-p4157/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0 协议。转载请注明出处!