剑指 Offer 14- II. 剪绳子 II

题目链接:剑指 Offer 14- II. 剪绳子 II

方法:数论

解题思路

\(n\) 分为 \(m\) 个数的和,使得这 \(m\) 个数的乘积最大,那么应该将 \(m\) 个数分为 \(2\)\(3\) 的组合, 尽可能为 \(3\)。注意大数越界问题。

代码

class Solution {
public:
    int cuttingRope(int n) {
        if (n == 2) return 1;
        if (n == 3) return 2;

        long long res = 1;
        while (n > 4) {
            res = res * 3 % 1000000007;
            n -= 3;
        }

        return res * n % 1000000007;
    }
};
posted @ 2023-04-06 22:31  lixycc  阅读(19)  评论(0)    收藏  举报