int cuttingRope(int n){ long dp[1001] = { 0}; int i,j,temp; for(i=1;i<=n;i++) { if(i != n) dp[i] = i; temp = i>>1; for(j=1;j<=temp;j++) dp[i] = fmax(dp[i],dp[j]*dp[i-j]); } return dp[n] % 1000000007; }
int cuttingRope(int n){ long ret = 1; int i; if(n==2) return 1; if(n==3) return 2; while(n>4) { ret *= 3; ret %= 1000000007; n-=3; } return (int)(ret*n%1000000007); }