1.数学法
和前一题不同的是,数很大可能溢出
思路是一样的,含有尽量多的3时乘积最大,
代码如下:
class Solution {
public:
int cuttingRope(int n) {
if (n == 2) return 1;
if (n == 3) return 2;
long ans = 1;
while (n > 4) {
ans *= 3;
n -= 3;
ans %= 1000000007;
}
//最后若N=5,则ans*3*2
//若N =4,则ans*4
ans *= n;
return ans % 1000000007;
}
};