牛客网---2016---美团平均年龄

来源:互联网 发布:sql server 完全卸载 编辑:程序博客网 时间:2024/06/10 16:07

兔子早上吃了个雪糕,冰冰凉凉舒服到爆炸,啧啧。话说回来,为什么吃雪糕牙齿有点凉凉的惹。

这里写图片描述

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

// 输入5 5 0.2 3// 输出15

解析:
1. 注意向上取整 Math.ceil()
2. W表示总人数,Y表示现平均年龄,x表示离职率,N表示N年后
3. 每过一年,每个人的年龄都会增加一岁,所以计算公式为 y=(y+1)*(1-x)+x*21;
解题所需函数:
1 . 取整方式

// 向上取整:Math.ceil() // 向下取整:Math.floor() // 四舍五入:Math.round() 

2 . Scanner的关闭

Scanner in=new Scanner(System.in);// 用完之后最好关了in.close();

3 . Scanner的补充—华为最高分是多少

// 1. 返回一个double,属于next()的缩小版本(nextInt())double M=in.nextDouble();// 2. 判断下一个数字是否是Int,通常配合if或者while使用(hasNext())if(in.hasNextInt()){    System.out.println("有数据的哟");}

代码:

import java.util.*;public class Main{    public static void main(String[] args){        Scanner in = new Scanner(System.in);        while(in.hasNext()){            double w = in.nextDouble();            double y = in.nextDouble();            double x = in.nextDouble();            int n = in.nextInt();            while(n>0){                y=(y+1)*(1-x)+x*21;                n--;            }            System.out.println((int)Math.ceil(y));        }        in.close();    }}