解题思路1:
由于数值范围很大,且题目中提示运算过程中的大数要对998244353取模,因此不能用传统动态规划去做,于是进行枚举:
绳子长度 最大的乘积组合
2 1X1
3 1X2
4 2X2
5 2X3
6 3X3
7 2X2X3
8 2X3X3
9 3X3X3
10 2X2X3X3
11 2X3X3X3
我们发现能凑3就凑3,实在不行就凑2,但是千万不能凑出来1哦~
代码1:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number long长整型
* @return long长整型
*/
final int MOD = 998244353;
public long cutRope (long number) {
// write code here
if(number == 2){
return 1;
}
if(number == 3){
return 2;
}
if(number % 3 == 0){
return pow(3, number/3);
}else if(number % 3 == 1){
return 2*2*pow(3, (number-4)/3)%MOD;
}else{
return (2*pow(3, (number-2)/3))%MOD;
}
}
//快速幂函数:求a的n次幂
public long pow(long a, long n){
long result = 1;
while(n > 0){
if((n & 1) == 1){
result = (result*a)%MOD;
}
a = (a*a)%MOD;
n>>=1;
}
return result;
}
}