平均年龄(数学计算)

来源:互联网 发布:python 中英文拆分 编辑:程序博客网 时间:2024/04/29 21:34

题目描述

已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 
从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(结果向上取整)。 
输入描述:
输入W Y x N


输出描述:
输出第N年后的平均年龄

输入例子:
5 5 0.2 3

输出例子:
15

题意分析:未离职的员工每一年的年龄都要涨一岁,但是新员工年龄并不需要涨,新员工入职都是21岁。

剩余老员工的下一年的年龄:w * (1 - x) * (y + 1) # 注意老员工年龄要涨一岁

新员工的年龄: w * x * 21

当前的总年龄: w * (1 - x) * (y + 1) + w * x * 21

计算平均年龄: (w * (1 - x) * (y + 1) + w * x * 21) / w

化简得如下式子:

# 所得结果中y为当前年的平均年龄

y = ((1 - x) * (y + 1) + x * 21)


代码如下:

#!/usr/bin/python#coding: utf-8import sysimport mathfor line in sys.stdin: # 多组输入res = line.split(" ")y = int(res[1])x = float(res[2])n = int(res[3])for i in range(n):y = ((1 - x) * (y + 1) + x * 21)print int(math.ceil(y))



0 0