平均年龄(公式)

题目描述

已知某公司总人数为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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值