题目
long会炸 只能用BIgInteger了
注意一下大数的乘法运算和取max
BigInteger.max(BigInteger a)返回自身和a的最大值
import java.math.BigInteger;
public class Offertwo {
public int cuttingRope(int n) {
if (n == 2) return 1;
if (n == 3) return 2;
BigInteger dp[] = new BigInteger[n+1];
dp[1] = new BigInteger("1");
dp[2] = new BigInteger("2");
dp[3] = new BigInteger("3");
for (int i = 4; i < n+1; i++) {
dp[i] = dp[i-2].multiply(new BigInteger("2")).max(dp[i-3].multiply(new BigInteger("3")));
}
return dp[n].mod(new BigInteger("1000000007")).intValue();
}
}