class Solution {
public:
int maxProductAfterCutting(int length) {
//思路,把原来的数拆成3和2时乘积最大,且拆的数尽可能多三,证明见Y总的题解。
//如果只有数模三余1,证明只需2个2,余2则需要1个2,注意特判n<=3的情况,此时
//只能拆成1和(n-1)
if(length <= 3) return 1 * (length - 1);
int res = 1;
if(length % 3 == 1) res *= 4,length -= 4;
else if(length % 3 == 2) res *= 2,length -= 2;
while(length) res *= 3,length -= 3;
return res;
}
};