zltzlt 发表于 2020-2-5 16:58:16

Python:每日一题 324

本帖最后由 zltzlt 于 2020-2-5 21:58 编辑

今天的题目:

给定一个正整数 n,将其拆分为两个及以上正整数的和,并使这些整数的乘积最大。返回可以得到的最大乘积。

示例 1:

输入:2
输出:1
解释:2 = 1 + 1,1 × 1 = 1。
示例 2:

输入:10
输出:36
解释:10 = 3 + 3 + 4,3 × 3 × 4 = 36。

{:10_298:}欢迎大家一起答题!{:10_298:}

hrp 发表于 2020-2-5 17:04:23

帖子有乱码

zltzlt 发表于 2020-2-5 17:04:37

hrp 发表于 2020-2-5 17:04
帖子有乱码

现在没有了

hrp 发表于 2020-2-5 17:05:00

zltzlt 发表于 2020-2-5 17:04
现在没有了

最后一行还有

zltzlt 发表于 2020-2-5 17:06:48

hrp 发表于 2020-2-5 17:05
最后一行还有

不好意思,现在没有了

William4869 发表于 2020-2-5 17:23:37

不用考虑1吗

zltzlt 发表于 2020-2-5 17:24:31

本帖最后由 zltzlt 于 2020-2-5 22:12 编辑

William4869 发表于 2020-2-5 17:23
不用考虑1吗

1 = 0 + 1,0 × 1 = 0{:10_250:}

不过 0 不是正整数

William4869 发表于 2020-2-5 17:33:52

本帖最后由 William4869 于 2020-2-5 17:46 编辑

import math
def f324(x):
    ret=1
    if x<4:
      return x-1
    elif x%3==1:
      return pow(3,x//3-1)*4
    elif x%3==2:
      return pow(3,x//3)*2
    else:
      return pow(3,x//3)
   
print(f324(31))


hrp 发表于 2020-2-5 17:34:47

看错题目

zltzlt 发表于 2020-2-5 17:35:11

William4869 发表于 2020-2-5 17:33
试一试,,不知道想的对不对

56 ms

zltzlt 发表于 2020-2-5 17:35:47

hrp 发表于 2020-2-5 17:34
看错题目

怎么可能会这么简单呢{:10_277:}

输入:10
输出:25
预期结果:36

hrp 发表于 2020-2-5 17:36:44

本帖最后由 hrp 于 2020-2-5 17:37 编辑

zltzlt 发表于 2020-2-5 17:35
怎么可能会这么简单呢

输入:10


脑袋懵看错题目了,看成拆分两个数了{:10_266:}{:10_266:}
你动作太快了

fan1993423 发表于 2020-2-5 17:42:24

意思就是说让这个数尽量的拆分成n个3吗,最后一个不能拆的数进行调节吗?

zltzlt 发表于 2020-2-5 17:42:50

fan1993423 发表于 2020-2-5 17:42
意思就是说让这个数尽量的拆分成n个3吗,最后一个不能拆的数进行调节吗?

并不是啊,看哪种拆分方法乘积大

一个账号 发表于 2020-2-5 17:44:58

怎么没有高亮?

zltzlt 发表于 2020-2-5 17:45:32

一个账号 发表于 2020-2-5 17:44
怎么没有高亮?

有啊??

fan1993423 发表于 2020-2-5 17:46:08

看8楼的答案就是这个意思嘛,我不知道是不是这个原理

William4869 发表于 2020-2-5 17:47:16

zltzlt 发表于 2020-2-5 17:35
56 ms

来看看速度有没有改进

zltzlt 发表于 2020-2-5 17:48:18

William4869 发表于 2020-2-5 17:33


这个解法好,32 ms

一个账号 发表于 2020-2-5 17:48:56

zltzlt 发表于 2020-2-5 17:45
有啊??

页: [1] 2 3 4
查看完整版本: Python:每日一题 324