平均年龄(公式)

来源:互联网 发布:淘宝胖驴户外怎么样 编辑:程序博客网 时间:2024/06/10 17:37

题目描述

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

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

输入例子:
3

输出例子:
5

首先吐槽下这个题目,出的真是有问题,题目的例子都不给清楚,给个3输出5这是啥意思。应该是输入n输出平均年龄,因为w、y、x相当于是一个固定的变量可以动态变化,只要用公式就可以解决了。题目的一个具体例子,输入133 26 0.01 64,输出71

题目分析
离职的员工个数 = 所有员工w * 离职率 ,(这个时候应该向上取整吧,个人感觉)
新加的员工个数 = 离职员工个数
平均年龄 = Math.ceil((所有员工w - 离职员工) * (当前年龄 + 1) + 新加员工 * 21)/所有员工
平均年龄向上取整
这样看是没问题,但是题目给的就是有问题,按题目的意思要进行化简,( ╯□╰ )
平均年龄 = Math.ceil((w - w*x) * (y + 1) + w * x * 21)/w)然后可以化简w把w去掉因为没有去掉w计算的时候又会有问题,会有误差( ╯□╰ )。。所以最后
平均年龄 = Math.ceil((1 - x) * (y + 1) + x * 21)
完全是一个公式题啊。。。。。。没啥意义就记录下而已( ╯□╰ )

    public static int getAvgAge(int w,int y,double x,int year){        int i;        double avgAge = y;        for(i = 1; i <= year; i++){//          System.out.println(i+"  "+avgAge);            avgAge =(1 - x)*(avgAge+1)+21*x;                            }//      System.out.println(avgAge);        return (int)Math.ceil(avgAge);    }

目前研究于Spark与Hadoop,群QQ号:521066396(spark,hadoop交流群),欢迎加入共同学习,一起进步~

0 0
原创粉丝点击