
描述
给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1],…,k[m] 。请问 k[1]k[2]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18 。
由于答案过大,请对 998244353 取模。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number long长整型
* @return long长整型
*/
int mod = 998244353;
long long pow(long long cnt){
if(cnt==0)return 1;
if(cnt==1)return 3;
long long part = pow(cnt/2);
if(cnt%2==0)return part*part%mod;
return 3*part*part%mod;
}
long long cutRope(long long number) {
// write code here
if(number<=3)return number-1;
long long res =1;
if(number%3==1){
res*=4;
number-=4;
}
if(number%3==2){
res*=2;
number-=2;
}
res = res*pow(number/3)%mod;
return res;
}
};
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)