题目:14- II. 剪绳子 II
参考14-I.剪绳子I 在此基础上,每累积3之后,要取模。
分析: 当绳子长度大于4时,尽可能多的分成长度为3的小段,这样乘积是最大的。(数学证明自行查找)
思路:
n小于4时,返回n-1;n等于4时,返回4;n大于4时,就要切割成长度为3的小段,只要n还大于4,每切除一段3,就累乘起来,然后取模。
代码:
class Solution {
public int cuttingRope(int n
) {
if(n
< 4){
return n
- 1;
}else if(n
== 4){
return n
;
}
long res
= 1;
while(n
> 4){
res
*= 3;
res
%= 1000000007;
n
-= 3;
}
return (int) (res
*n
%1000000007);
}
}