寻找锄头的程序,许多孩子在分发糖果时会得到糖果,并在 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