面试题14-2.剪绳子2_hn

题目描述

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0]k[1]...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例

示例 1:

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

示例2:

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

提示:
2 <= n <= 1000

解答方法

方法一:找规律

思路

代码

class Solution:
    def cuttingRope(self, n: int) -> int:
        mod = 1000000007
        if n <= 3:
            return n-1
        if n % 3 == 0:
            return pow(3, n//3) % mod
        if n % 3 == 1:
            return (pow(3, n//3 -1) * 4)  % mod
        if n % 3 == 2:
            return (pow(3, n//3) * 2) % mod

时间复杂度

空间复杂度

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子...
    1只特立独行的猪阅读 202评论 0 0
  • 给你一根长度为 n 的绳子,请把绳子剪成 m 段(m、n 都是整数,并且)。每段的绳子的长度记为、、……、。可能的...
    修司敦阅读 2,168评论 0 1
  • 题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长...
    人一己千阅读 106评论 0 1
  • 剪绳子 II 题目描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>...
    阿星啊阿星阅读 463评论 0 0
  • 父亲能为孩子做的最好的事,就是好好爱孩子的妈妈; 母亲能为孩子做的最好的事,就是尽量理解孩子的爸爸...
    木语MH阅读 275评论 0 3