假设有N 个收藏品。您可以呼叫最少 1 人至最多k人来为您收集这些收藏品。您呼叫的人数将在他们之间以N值的尽可能高的股权平均分享一些收藏品。你得到剩下的剩余收藏品。优化被调用的人数,这样你就可以得到最大可能的人数。收藏品,并输出最大可能数量的收藏品你可以得到。例如,如果有 11 个收藏品,您最多可以呼叫 3 个人,那么您最多可以获得 2 个收藏品。这是因为如果你打电话给 3 个人,他们会以 11 人中最高的胜率分配收藏品,即 3。所以你会剩下 2 个收藏品。
解决这个问题的一个显而易见的方法是建立一个循环运行直到k,并存储最大可能的N 模 k。但这是一种生硬的方法,我想通过在N 固定且k<=N的约束下最大化 N modulo k来使代码更高效。有人可以为我提供优化上述问题的可能方法吗?
PS:我没有包含任何代码,因为直率的方法很明显,我正在寻找一种方法来解决我希望解决问题的方式,而不是代码。