public int cuttingRope(int n) { if(n<2) return 0; if(n == 2) return 1; if(n == 3) return 2; int times_of_3 = n/3; if(n%3 == 1){ times_of_3 --; } int times_of_2 = (n-times_of_3*3)/2; int res = 1; while (times_of_3>0){ res = ((res+res)%1000000007 + res)%1000000007; times_of_3--; } while (times_of_2>0){ res = res*2%1000000007; times_of_2--; } return res; }