8.5 第一次做,无法 AC,大数越界!这题有点难!这题先不做!跳过!

题目描述


原题链接:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/

解题思路


K 神题解:https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/solution/

  1. class Solution {
  2. public int cuttingRope(int n) {
  3. if(n <= 3) return n - 1;
  4. int b = n % 3, p = 1000000007;
  5. long ret = 1;
  6. int lineNums = n / 3; //线段被我们分成以3为大小的小线段个数
  7. for(int i = 1; i < lineNums; i++) //从第一段线段开始验算,3 的 ret 次方是否越界。注意是验算 lineNums - 1 次。
  8. ret = 3 * ret % p; // 中途就取余,使其不越界
  9. if(b == 0) return (int)(ret * 3 % p); //刚好被3整除的,要算上前一段
  10. if(b == 1) return (int)(ret * 4 % p); //被3整除余1的,要算上前一段
  11. else return (int)(ret * 6 % p); //被3整除余2的,要算上前一段
  12. }
  13. }