剑指 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;
}
};

浙公网安备 33010602011771号