給你一根長度爲 n 的繩子,請把繩子剪成整數長度的 m 段(m、n都是整數,n>1並且m>1),每段繩子的長度記爲 k[0],k[1]…k[m] 。請問 k[0]k[1]…*k[m] 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別爲2、3、3的三段,此時得到的最大乘積是18。
簡要題解
當n大於4的時候每段繩子儘量剪成3 要是不能被3整除倒數第二段和倒數第一段的繩子結合起來 簡要代碼如下:
class Solution {
public:
int mod=1000000007;
int cuttingRope(int n) {
if(n==2)return 1;
if(n==3)return 2;
long ans=1;
while(n>4)
{
ans*=3;
ans%=mod;
n-=3;
}
ans*=n;ans%=mod;
return ans;
}
};