在Python中找到从n个球中随机选择k个球的最大和最小元素之间的差异和的程序
假设我们有由数组nums编号的n个球,其大小为n,nums [i]表示球i的数量。现在有另一个值k. 每次我们从n个不同的球中选择k个球,并找到k个球的最大和最小值的差异,并将差异存储在表格中。然后将这些k个球再次放入那个锅中并再次选择,直到我们选择了所有可能的选择。最后从表中找到所有差异的总和。如果答案太大,则返回结果mod 10 ^ 9 + 7。
所以,如果输入如n = 4 k = 3 nums = [5, 7, 9, 11],则输出将为20,因为组合为 –
- [5,7,9],差为9-5= 4
- [5,7,11],差为11-5 = 6
- [5,9,11],差为11-5 = 6
- [7,9,11],差为11-7 = 4
,因此4 + 6 + 6 + 4 = 20。
为了解决这个问题,我们将遵循以下步骤 –
- m:= 10 ^ 9 + 7
- inv:具有元素[0,1]的新列表
- 对于i在范围2到n中,执行
- 将(m-地板(m / i)* inv [m mod i] mod m)插入inv的末尾
- comb_count:= 1
- res:= 0
- 对于选择范围k-1至n-1,执行
- res:= res +(nums [pick] – nums [n-1-pick])* comb_count mod m
- res:= res mod m
- comb_count:= comb_count *(pick + 1)mod m * inv [pick + 2-k] mod m
- 返回res
示例
让我们看以下实现以获得更好的理解–