方法:数论
解题思路
将 \(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;
}
};
标签:return,14,Offer,res,个数,II
From: https://www.cnblogs.com/lxycoding/p/17294487.html