如果全都公平,这个也有可能是无解的吧
比如3个人,每个人销售额都是10, 10, 10, 也就是三人销售额相等,那么100万奖金无论如何也没法公平分给3个人,必须要有人按照设定的优先级或者随机的优先级拿大头(多拿点。不公平的方法),才能凑满100%。
33 + 33 + 34 = 100
所以,第一步,判断1能不能被S除尽(S分之一是不是个有限小数。S只包含因子2、5时才是)。不能除尽的话,要搞优先级(有人多拿点,把除不尽的那点拿走)。
能除尽的话,而且奖金总额中10的幂次数大于等于1/S的有效小数位数的话,是可以做到0误差的。
1/S = 0.b1b2...bi = b1b2...bi * 10^(-i),
奖金总额 M = c1c2...cj * 10^m,
an/S * M = an * b1b2...bi * 10^(-i) * c1c2...cj * 10^m = an * b1b2...bi * c1c2...cj * 10^(m - i)
m >= i时,上面这个一定是个整数。
--
修改:z16166 FROM 221.220.168.*
FROM 221.220.168.*