就是一个区间-5000到4999
为什么过剩数是5000和150,
可以给我讲解一下过剩数是怎么定义的嘛
当进行除法运算时,如果除数不能整除被除数,则会产生余数。
余数就是除法运算的过剩数。
举个例子:如果我们把7除以3,得到2余1,其中1就是余数,也可以说是过剩数。
在你所提到的区间-5000到4999中,如果要将其中所有数都除以50,那么有些数是可以整除的,比如4500除以50等于90,
但是有些数除以50会产生余数,比如4951除以50等于99余1。这个余数1就是该除法运算的过剩数。
而在这个区间内,当除数为50时,可以整除的数有100个(即-5000到4999中所有以50为单位的数字),而产生余数1的数只有2个,分别是4951和-4901。
因此,我们说过剩数是5000和150。
用一个大小为20的最大堆,通过维护这个堆,每次选出一个最大的数,如此往复500次,所以时间复杂度500 * log(20)