鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

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

[复制链接]
发表于 2020-2-5 19:44:23 | 显示全部楼层
  1. def solve(n):
  2.     if n <=3:
  3.         return n
  4.     else:
  5.         if n%3==0:
  6.             return pow(3,n//3)
  7.         elif n%3==1:
  8.             return pow(3,n//3-1)*4
  9.         else:
  10.             return pow(3,n//3)*2
  11.         
  12. print(solve(4))
复制代码

我来解释一下,为什么要以三来分,
设这个数为n,分为 n/x 份,每个数字就是 x
那么这些数字的乘积之后求导的这张图片可以看到,当x越接近 e 的时候,这个乘积就是最大的
所以就去,2和3 来进行拆分。
其实10 分为 334 不准确,应该是,分为 3322
不过乘积都是一样的。。。。
知其然更要知其所以然!

求导之后

求导之后

评分

参与人数 2荣誉 +11 鱼币 +11 贡献 +3 收起 理由
fan1993423 + 5 + 5 + 3 可以的
zltzlt + 6 + 6

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 1

使用道具 举报

 楼主| 发表于 2020-2-5 20:13:45 | 显示全部楼层
wanting-for 发表于 2020-2-5 19:44
我来解释一下,为什么要以三来分,
设这个数为n,分为 n/x 份,每个数字就是 x
那么这些数字的乘积之后 ...

解答错误

输入:2
输出:2
预期结果:1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:28:28 | 显示全部楼层
zltzlt 发表于 2020-2-5 17:24
1 = 0 + 1,0 × 1 = 0

0 可不是正整数啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:31:17 | 显示全部楼层
zltzlt 发表于 2020-2-5 20:13
解答错误

输入:2
  1. def solve(n):
  2.     if n <=3:
  3.         if n == 2:
  4.             return 2
  5.         if n == 1:
  6.             return 0
  7.         return n
  8.     else:
  9.         if n%3==0:
  10.             return pow(3,n//3)
  11.         elif n%3==1:
  12.             return pow(3,n//3-1)*4
  13.         else:
  14.             return pow(3,n//3)*2
  15.         
  16. print(solve(1))
复制代码

已修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:39:49 | 显示全部楼层
wanting-for 发表于 2020-2-5 19:44
我来解释一下,为什么要以三来分,
设这个数为n,分为 n/x 份,每个数字就是 x
那么这些数字的乘积之后 ...

哦,我刚刚自己求导了一下,终于搞清楚了原理,如果不限制是整数的话,应该越多自然常数e越大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 20:48:55 | 显示全部楼层
zltzlt 发表于 2020-2-5 18:53
15 = 3 + 3 + 3 + 3 + 3,3 * 3 * 3 * 3 * 3 = 243。

这是分解成4个啊?我怎么看都是 5 个耶。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:02:36 | 显示全部楼层
fan1993423 发表于 2020-2-5 20:39
哦,我刚刚自己求导了一下,终于搞清楚了原理,如果不限制是整数的话,应该越多自然常数e越大

编程还是跟数学分不开啊,可惜我的数学都忘了差不多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:08:21 | 显示全部楼层
话说,两个以上不是该 大于2 吗?
1+1 这种数量不是 等于2 了么?

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 21:30:34 | 显示全部楼层
def function324(n):
    if n < 2:
        return None
    elif n == 2:
        return 1
    elif n == 3:
        return 2
    else:
        a,b=divmod(n,3)
        return [3,4,6][b]*pow(3,a-1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 21:58:47 | 显示全部楼层
阴阳神万物主 发表于 2020-2-5 21:08
话说,两个以上不是该 大于2 吗?
1+1 这种数量不是 等于2 了么?

漏了个 “及”。

小如芝麻的问题都能找出来~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 22:08:12 | 显示全部楼层
阴阳神万物主 发表于 2020-2-5 20:48
这是分解成4个啊?我怎么看都是 5 个耶。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:09:23 | 显示全部楼层
这题目换个说法不就是看谁拆3拆的多么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 22:10:06 | 显示全部楼层
546623863 发表于 2020-2-5 22:09
这题目换个说法不就是看谁拆3拆的多么

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:20:14 | 显示全部楼层
  1. import math
  2. def fun324(n):
  3.     if(n < 4):
  4.         return n-1
  5.     if(n%3 == 0):
  6.         return pow(3,n//3)
  7.     elif(n%3 == 1):
  8.         return pow(3,n//3-1)*4
  9.     elif(n%3 == 2):
  10.         return pow(3,n//3)*2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:33:19 | 显示全部楼层
这题是高中数论竞赛题,结论就是 越多的3 越大 因为 3x3=9 2x2x2=8 当和为6时两个3更大  若含有因子 a大于4 则可以写作
3(a-3) = 3a - 9>a 所以因子不大于4 那么因子就是2,3,4  唯一变数就是4 4分成2x2比 1x3大 所以 出现4的时候还是分成2个2更大
综上 如何分割?只分割成3和2 且 2的个数不大于2
  1. def fun324(n):
  2.     if n >= 4:
  3.         res = n % 3
  4.         div = n // 3
  5.         if res == 1:
  6.             return (3 ** (div - 1)) * 4
  7.         elif res == 2:
  8.             return (3 ** div) * 2
  9.         else:
  10.             return 3 ** div
  11.     else:
  12.         return n - 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:37:52 | 显示全部楼层

难道要暴力尝试应该分成多少个数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 22:38:06 | 显示全部楼层
不知道大家需要证明吗?我可以给出非常严谨的证明的,不知到大家需要吗?前面的朋友们只是从函数角度证明,只能说定性不算严格证明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 23:54:04 | 显示全部楼层
本帖最后由 shansongh 于 2020-2-6 00:40 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 00:19:33 | 显示全部楼层
本帖最后由 shansongh 于 2020-2-6 00:40 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 00:33:02 | 显示全部楼层
本帖最后由 shansongh 于 2020-2-6 00:39 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 07:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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