本文共 633 字,大约阅读时间需要 2 分钟。
这题和前面的剪绳子 n 的取值范围不同,涉及到了大数会越界的问题,需要每次都对其取余。
3 * 3
,而不是2 * 2 * 2
;class Solution { public int cuttingRope(int n) { // 对于 2 3 返回 1 和 2是特殊解 if(n <= 3) return n-1; // res 使用 long 防止中间结果取余后过大 long res = 1; // 对 长度大于4的,尽可能分解多的长度3 while(n > 4){ res *= 3; // 每步都要取余,防止中间结果超出 long 取值范围 res = res % 1000000007; n -= 3; } // 最后对 long 转换类型,依然要取余。 return (int)(res * n % 1000000007); }}
转载地址:http://bpozi.baihongyu.com/