鱼C论坛

 找回密码
 立即注册
查看: 15857|回复: 42

[已解决]Python:每日一题 325

[复制链接]
发表于 2020-2-6 14:34:48 | 显示全部楼层
本帖最后由 William4869 于 2020-2-6 15:14 编辑
  1. def f325(x):
  2.     if x<4:
  3.         return (x/2)*(x/2)
  4.     e=2.718281828459045
  5.     num=x//e
  6.     if pow(x/num,num)>pow(x/(num+1),num+1):
  7.         return pow(x/num,num)
  8.     else:
  9.         return pow(x/(num+1),num+1)

  10. print(f325(0.5))
复制代码




稍作修改,仅仅猜测

评分

参与人数 1荣誉 +4 鱼币 +4 贡献 +2 收起 理由
fan1993423 + 4 + 4 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 14:54:05 | 显示全部楼层
楼主,加一个条件吧,拆成若干个正数之和,,不然1=-2+-2+5,这样的下去就无解了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 16:46:39 | 显示全部楼层
本帖最后由 William4869 于 2020-2-6 23:38 编辑

证明:
已知对任意X,分成给定K个数之和求乘积,当且仅当取N等分时乘积最大(平均值不等式)
x1x2x3....xK<((x1+x2+x3...+xK)/K)^K

所以最佳拆法分必然是等分

于是题目转换成,给定X
求f(n)=(X/n)^n的最大值

取对数求导d(lnf(n))/dn=lnX-lnn-1=ln(x/ne)

所以当n取x/e时f(n)最大,且向两边递减
又n只能取整数
所以n=x/e向上或向下取整即为所求

而当x<2e时,上述可能不适用
因为此时x/e向下或向上取整,可能不拆分变成1*x最大(在x<4时开始体现)与题意就有了出入,当成特例处理一下就行

权限不够,不好上传图片,手打可累了

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 23:17:15 From FishC Mobile | 显示全部楼层
本帖最后由 William4869 于 2020-2-6 23:35 编辑
fan1993423 发表于 2020-2-6 22:29
你后面解释不是x

上面写错了一点点,,

我想说的是x<2e可能不适用,并不是e^2(无所谓,并不影响),只是说可能不适用,没说一定不适用,这个不适用从x=4开始有了体现,
主要是因为可能对于f(n)=(x/n)^n,可能在n=1时取最大值,比如x=3时,这样事实上n=1时,1个3要比拆成两个数乘积要大(而题目至少需要拆2个数)
这样的考虑对(x/2)^2和x进行比较,很容易得到是在x=4时才会出现这样的情况,毕竟1个4和2个2的结果是一样的,所以没有写2e
关于没用内置e的问题,,随意的吧,,知道原理就知道差不多了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-3 08:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表