0183 最大拆分乘积
* * * *
拉格朗日计划
* * * *
最大拆分乘积

给定正整数N,将其拆分成k个相等的部分,并记$r=N/k$、$P=r^k$。

例如,将$11$拆分成$5$个相等的部分,那么$r=11/5=2.2$,$P=2.2^5=51.53632$。

令$M(N)$为P可能取到的最大值,例如可以验证,$N=11$时,该值在$k=4$时取到,即$M(11)=(11/4)^4=14641/256=57.19140625$,是一个有限小数。

然而,对于$N=8$,该值则在$k=3$时取到,即$M(8)=(8/3)^3=512/27$,不是有限小数。

若$M(N)$不是有限小数,则记$D(N)=N$,否则记$D(N)=-N$。

可以验证$\sum_{N=5}^{100}D(N)=2438$, 求$\sum_{N=5}^{10000}D(N)$。

本题难度:



解答

令 $$f(x)=(\frac{n}{x})^x,$$ 则 $$f'(x)=(\frac{n}{x})^x(\ln\frac{n}{x}-1),$$ 其零点为$x=n/e$, $f'$在零点的左侧始终为正,右侧始终为负,因此$x=n/e$是一个全局最大值点。

由于k只能是整数,因此先令$k=\lfloor n/e \rfloor$,并比较$f(k)$和$f(k+1)$的大小: \begin{align*} &(\frac{n}{k+1})^{k+1}>(\frac{n}{k})^k \\ \Leftrightarrow &(k+1)(\ln n-\ln(k+1))>r(\ln n-\ln k) \\ \Leftrightarrow &\ln n>\ln (\frac{k+1}{k})^k(k+1) \\ \Leftrightarrow &\frac{n}{k+1}>(1+\frac{1}{k})^k. \end{align*} 因此上述不等式成立时取$k=\lceil n/e \rceil$,否则取$k=\lfloor n/e \rfloor$。

将$n/k$化为最简分数后若分母没有2或5以外的质因子,那么结果为有限小数,否则为无限小数。

按此计算即得结果$48861552$。

注: 本题涉及的微积分涵盖在我国各层次的《高等数学》课程中。

import math,fractions

d=0
for n in range(5,10001):
    x=int(n/math.e)
    if 1.0*n/(x+1)>(1+1.0/x)**x:
        x+=1
    x/=fractions.gcd(n,x)
    while x%2==0:
        x/=2
    while x%5==0:
        x/=5
    d+=-n if x==1 else n

print d