是否可以在没有if语句的情况下找到大于或等于n的k的最小多重性? 换句话说,可被k整除的最小数字大于或等于n。
我正在寻找无条件的表达式(也没有三元运算符,等等)。
例如,
n = 78, k = 10 -----> 80
n = 80, k =10 -------> 80
n = 13, k = 3 -------> 15
n = 14, k =2 ----> 14
n=13, k = 11 ----> 22
答案 0 :(得分:0)
滥用bool
可以转换为int
的事实:
tests = [(78, 10), (80, 10), (13, 3), (14, 2), (13, 11)]
for n, k in tests:
print([n, n - n % k + k][int(bool(n % k))])
输出
80
80
15
14
22
说明
[n, n - n % k + k]
仅创建一个列表。 “技巧”是我们使用的索引:如果n % k
是0
,则意味着我们要选择n
。否则,int(bool(n % k))
将变为1
,这意味着将选择n - n % k + k
。
答案 1 :(得分:0)
这可以解决问题
x = ((n // k) + (n % k != 0)) * k