员工之间工资不超1.5倍

三名员工 a b c ,为消除贫富差距,公司规定员工间工资不超过1.5倍,即a/b<1.5 a/c<1.5 b/c<1.5
在工资总量不变的情况下,如何实现员工间工资调整幅度最低且满足1.5倍要求,请提供思路。

假设总工资为15000,假设a,b,c三个之中最小工资为a,最大值为c,情况可以划分三种,
//情况1:总工资不变,a最大情况:三者相同 ,即a=b=c
    a=15000/3=5000,b=5000,c=5000
//情况2:总工资不变,a中等,b=a,c=1.5a
    a=15000/(1+1+1.5)=4300,b=4300,c=6400
//情况三:总工资不变,a最小,b=c=1.5a
    a=15000/(1+1.5+1.5)=3750,b=c=5625

从上面可以看出,总工资不变
a,b,c三个相同时,最小值a最大 ;b.c最大时,都为a的最大倍数,最小值a最小:
    3750=<a<=5000,
c的范围:a,b,c三个均等时,最大值最小;a,b最小时,c最大
    5000=<c<=6400
所以最大薪资和最小薪资范围都已确定,那么一旦在各自区间给出确定值后,中间值就用总金额去减掉就ok了:b=15000-a-c;
根据上面分析就简单多了,我们只需要获取最大值和最小值区间就好了
function getMaxSaleryLevel(total){
    var min=total/(1+1+1);即a=b=c
    var max=total/(1+1+1.5);即b=a,c=1.5a
    return {'min':min,'max':max};
}
function getMinSaleryLevel(total){
    var min=total/(1+1.5+1.5);//b=c=1.5a
    var max=total/(1+1+1);//a=b=c
    return {'min':min,'max':max};
}
var maxLevel=getMaxSaleryLevel(total);
var minLevel=getMinSaleryLevel(total);
那么最大值的范围:[maxLevel.min~maxLevel.Max]
最小值的范围:[minLevel.min~minLevel.max]
只要确保最高工资和最低工资在各自的范围内,那么中间那个人的工资用总工资减去这两个就ok了,
结果都保证在1.5000倍数区间内并且总工资不变