我必须为客户分配元素。在分配算法中,在我分配剩余项目之前,所有客户都应该有一个特定的最小值。
其中一些项目是预先挑选的。对于这些预先挑选的元素,至少给出了一个容器数量。有时两个。
我需要一种有效的算法来找到最小值,该值高于每个客户给定的最小值,并且可以除以至少一个容器数量而没有余数。
这里有一些简单的代码可以更好地理解:
int containerQty1;
int? containerQty2; // Can be null
int customerMinimum;
int minimumToGet;
在此示例中,minimumToGet
的值应高于 customerMinimum
,但必须除以 containerQty1
或 containerQty2
.
最佳答案
给定两个数字,M
和 D
,您可以构造 M
之上的最小数字 X
使得D
除X
方法是先将D
加到M
上,然后减去和除以的余数D
,即
int X = (M+D) - ((M+D) % D);
示例:M = 200
,D = 13
。我们正在寻找 200 以上的 13 的最小倍数。
int X = (200+13) - ((200+13) % 13) = 213 - 5 = 208;
关于c# - 找到具有给定除数的最接近的较大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885259/