3个数越多答案越大,所以n%3有三种情况:
余数为0直接做3^(n/3)
余数为1做4*3^((n-4)/3)
余数为2做2*3^((n-2)/3)
代码技巧部分:因为指数会很大如果用Math的函数效率低,这种情况可以用快速幂去做,比如a^n次方要n次的相乘,快速幂只需要logn次
import java.util.*;
public class Solution {
//快速幂函数求a^n次方的结果
long pow(long a, long n){
final int MOD = 998244353;;
long ans = 1;
while(n>0){
if(n%2 == 1)ans = (ans*a)%MOD;
a = (a*a)%MOD;
n/=2;
}
return ans;
}
public long cutRope (long number) {
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 4*pow(3,(number-4)/3)%998244353;
else return (2*pow(3,(number-2)/3))%998244353;
}
}