已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。
从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。
import java.util.Scanner;
public class Main{
//该问题需要假设离职后剩下的老员工平均年龄不变,否则缺少条件
public static int averageAge(int w, double y, double x, int n) {
for(int i = 0 ; i < n ; i++){
y = (y + 1) * (1 - x) + 21 * x;
}
return (int)Math.ceil(y);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
do {
int w = sc.nextInt(); //w:公司总人数,在解题时没有用到
double y = sc.nextDouble(); //y:当年平均年龄
double x = sc.nextDouble(); //x:离职率
int n = sc.nextInt(); //n:n年后
System.out.println(averageAge(w,y,x,n)); // n年后公司员工的平均年龄
} while(sc.hasNext());
}
}
网友评论