现在感觉脑筋大了。当然,我可以蛮力这个,但我觉得有是一个简单的函数来返回这个数。关于本机函数,我使用的是PHP和/或Python。
例如:存在容器,每个容器包含 X (5)面包棒 我需要每人喂 Y (25)人 Z (3)面包棒。
我需要返回我必须获得的容器数量来喂养这些人。 (可能有也可能没有剩余的面包棒)。
编辑:澄清了一些意图。
答案 0 :(得分:3)
听起来你想要算术:
min_containers = y*z/x
如果您的情况可能会产生余数:
min_full_containers = floor(y*z/x)
remaining_items = y*z%x
答案 1 :(得分:2)
def f(X, Y, Z):
d, r = divmod(Y * Z, X)
return d + bool(r)
答案 2 :(得分:1)
#python
import math
int(math.ceil(float(Y) * Z / X))
答案 3 :(得分:1)
奈德的回答是正确的。通过执行以下操作来避免对math.ceil()的函数调用开销也很常见:
minContainers = int((y*z+(x-1))/x);
答案 4 :(得分:1)
在Python中,使用//
(在Python 2.2中引入的整数分区)并强制它向上舍入:
number_required = y * z
container_holds = x
reqd_containers = (number_required + container_holds - 1) // container_holds
或者如果您需要所谓的“专业程序员”版本而不是解释性版本:
n=(y*z+(x-1))//x;
或者如果你真的害怕腕管综合症,请将两个多余的括号和分号切掉:
n=(y*z+x-1)//x
注意:此解决方案适用于Python 2(其中10 / 3 -> 3
)和Python 3(其中10 / 3 -> 3.3333333333333335
)
其他“解决方案”不仅使用不必要的函数调用,而且还会因大数字而失败:
# wrong in Python 3; works with Python 2.3 to 2.7
# int overflow with Pythons up to 2.2
>>> int((100000000000000000 + 2)/3)
33333333333333332 # last digit should be 4
# wrong with Python 2.3 onwards; int overflow with earlier versions
>>> import math
>>> int(math.ceil(float(100000000000000000) / 3))
33333333333333332L
答案 5 :(得分:-1)
($ people * $ breadSticksPerPerson)/ $持有人不正确?
编辑:抱歉,误读了您的问题,在评论中发布了正确的解决方案