题目描述:
题解:
如果正方形土地的右上角坐标为 (n, n),周长为 8n,那么其中包含的苹果总数为:
Sn=2n(n+1)(2n+1)
对于坐标为 (x,y) 的树,它有 ∣x∣+∣y∣ 个苹果。因此,一块右上角坐标为 (n,n) 的正方形土地包含的苹果总数为
由于 x 和 y 是对称的,因此:
解法1:暴力枚举
从小到大枚举 n,直到 2n(n+1)(2n+1)≥neededApples 为止。
解法2:二分查找
由于 S那是随着 n 单调递增的,可以通过二分查找的方法,找出最小的满足条件的n
class Solution:
def minimumPerimeter(self, neededApples: int) -> int:
left = 1
mid = 0
right = 100000
while(left<=right):
mid = int((left + right) /2)
if(2 * mid * (mid + 1) * (2 * mid + 1) >=neededApples):
ans = mid
right = mid - 1
else:
left = mid + 1
return ans*8 #周长为8n