寻找锄头的程序,许多孩子在分发糖果时会得到糖果,并在 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 婚前女儿生日祝福语简短