平均年龄-美团笔试
2016-04-13 11:14
141 查看
已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。
从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(结果向上取整)。
输入:输入W Y x N
输出:平均年龄。
思路:这道题比较简单,利用数学思维做,时间复杂度为O(n),空间复杂度为O(1),具体做法计算从第一年到第N年的就可以了。题目已经给定新员工每年的年龄平均都是21岁,并且招聘的人数和离职的一样。所以可以得到如下公式:
等式左边的y是当年平均年龄,右边的y是上一年所以要加1,x是离职率和入职率,21*x可以得到新员工的年龄平均率。
有上面的思路,写出代码如下:
从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(结果向上取整)。
输入:输入W Y x N
输出:平均年龄。
思路:这道题比较简单,利用数学思维做,时间复杂度为O(n),空间复杂度为O(1),具体做法计算从第一年到第N年的就可以了。题目已经给定新员工每年的年龄平均都是21岁,并且招聘的人数和离职的一样。所以可以得到如下公式:
y = 21*x+(1-x)*(y+1);
等式左边的y是当年平均年龄,右边的y是上一年所以要加1,x是离职率和入职率,21*x可以得到新员工的年龄平均率。
有上面的思路,写出代码如下:
package company; import java.util.Scanner; /** * 已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1, * 每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(结果向上取整)。 * Created by lizhaoz on 2016/4/13. */ public class Avgage { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while(scanner.hasNext()){ int W=scanner.nextInt(); int Y=scanner.nextInt(); double x=scanner.nextDouble(); int N=scanner.nextInt(); int end=age(Y,x,N); System.out.println(end); } } private static int age(double y, double x, int n) { for(int i = 1;i<=n;i++){ y = 21*x+(1-x)*(y+1); } return (int)Math.ceil(y); } }
相关文章推荐
- 173.When does a transaction complete? (Choose all that apply.)
- c#后台 极光推送到Android 和IOS客户端
- mysql二级索引
- linux下bus,device,driver三者关系
- Sqlserver2012 中文乱码解决
- 《Storm入门》中文版
- unity3d插件Daikon Forge GUI 中文教程4-高级控件Checkbox和dropdownlis的使用
- Java学习·eclipse换主题颜色
- pdf文档内容如何修改
- OpenCV 学习笔记1 --- 开发环境配置(win10+VS2015+OpenCV2.4.12)
- Spring4.1 cache 应用
- VS2012运行opencv程序时缺少MSVCP120D.dll
- ImageNet Classification with Deep Convolutional nerual network
- android 设定activity的动画
- cv1.7去背景以及人脸检测人脸识别
- 首席架构师徐海峰眼中的架构和出色的架构师
- PowerDesign
- mybatis缓存 redis实现
- C/C++中extern关键字详解
- linux内核中的get_user和put_user