
由于数值范围很大,且题目中提示运算过程中的大数要对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哦~
- 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;
- }
- }