题目:
已知某公司总人数为W
,平均年龄为Y
岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x
,x>0&&x<1
,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。
从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。
输入描述:
输入
W Y x N
输出描述:
输出第N年后的平均年龄
输入例子:
5 5 0.2 3
输出例子:
15
请给出你的解决方案!
***
思路:
第一年的平均年龄 :Y1 = (W(1-x)(Y + 1) + 21Wx) / W = (1-x)(Y + 1) + 21x
第二年的平均年龄 :Y2 = (W(1-x)(Y1 + 1) + 21Wx) / W = (1-x)(Y1 + 1) + 21x
...
第n年的平均年龄 :Yn = (W(1-x)(Y(n-1) + 1) + 21Wx) / W = (1-x)(Y(n-1) + 1) + 21x
***
import math
def cal_vag_age(w, y, x, n):
if n == 1:
return math.ceil( (1- x)*(y + 1) + 21 * x )
else:
return math.ceil( (1-x) * (cal_vag_age(w, y, x, n-1 ) + 1) + 21* x )
if __name__ == "__main__":
print("初期平均年龄为30的公司,保持10年,90%%离职率后的平均年龄为 %d" % cal_vag_age(20, 30, 0.9, 10))
print("初期平均年龄为30的公司,保持10年,50%%离职率后的平均年龄为 %d" % cal_vag_age(20, 30, 0.5, 10))
print("初期平均年龄为30的公司,保持10年,10%%离职率后的平均年龄为 %d" % cal_vag_age(20, 30, 0.1, 10))
print("初期平均年龄为30的公司,保持10年,1%%离职率后的平均年龄为 %d" % cal_vag_age(20, 30, 0.01, 10))
初期平均年龄为30的公司,保持10年,90%离职率后的平均年龄为 22
初期平均年龄为30的公司,保持10年,50%离职率后的平均年龄为 23
初期平均年龄为30的公司,保持10年,10%离职率后的平均年龄为 31
初期平均年龄为30的公司,保持10年,1%离职率后的平均年龄为 40
发现
离职率越高,公司的员工平均年龄越低?这个现场是不是说明为什么公司总是不停的招人(为了公司更年轻)?就是为了让公司保持活力?老员工越来越不待见?心寒~~~~~~~
网友评论