寻找锄头的程序,许多孩子在分发糖果时会得到糖果,并在 Python 中维护规则
假设我们有k个糖果。我们必须将它们分配给儿童。现在有一些规则
第i个孩子会得到i^2个糖果
在索引1到ii的所有儿童都被送达之前,索引i的任何儿童都不会得到任何糖果
如果第i个孩子没有得到i^2个糖果,那么这不是一次有效的发球。
所以,如果输入像k=20,那么输出将是3因为,第一个会得到1,第二个会得到2^2=4,第三个会得到3^2=9,但第四个需要4^2=16,但我们只剩下6个糖果,所以这不是一个有效的分配,所以只会给三个孩子。
示例
让我们看看以下实现以获得更好的理解-
def solve(k):
left = 0
right = k
while (right - left > 1):
mid = (left + right) //2
if (mid * (mid + 1) * (2 * mid + 1) // 6 > k):
right = mid
else:
left = mid
if (right * (right + 1) * (2 * right + 1) <= k * 6):
return right
return left
k = 20
print(solve(k))输入
20输出结果
3
热门推荐
10 端午发给客户祝福语简短
11 周末祝福语正能量简短
12 中考祝福语简短卡片大全
13 天气转凉祝福语简短
14 祝美术老师祝福语简短
15 亲戚生日红包祝福语简短
16 领证幽默祝福语简短
17 孙子结婚祝福语大全简短
18 下雨开工吉祥祝福语简短