n<=1000
其实就是根据上一道题找出的规律: 因子里3越多, 乘积越大. 前4项成为了特例
class Solution {
public:
int cuttingRope(int n) {
if(n == 2) return 1;
if(n == 3) return 2;
if(n == 4) return 4;
int result = 1;
int div = n/3 - 1;
for(int i = 1; i<=div; i++)
result = (3L*(long)result)%(long)(1e9+7);
if(n%3 == 0)
result = (3L*(long)result)%(long)(1e9+7);
else if (n%3 == 1)
result = (4L*(long)result)%(long)(1e9+7);
else
result = (6L*(long)result)%(long)(1e9+7);
return result;
}
};
网友评论