列表

详情


MT6. 平均年龄

描述

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

输入描述

输入W Y x N

输出描述

输出第N年后的平均年龄

示例1

输入:

5 5 0.2 3

输出:

15

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2021-08-13

#include<stdio.h>
#include<math.h>

int main ()
{
    int total,n,result;
    float x,age;
    while(scanf("%d %f %f %d",&total,&age,&x,&n)!=EOF)
    {
        int i;
        for(i=1;i<=n;i++)
            age=((1-x)*(age+1)+x*21);
        result=ceil(age);
        printf("%d\n",result);
        
    }
    
}

C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2020-08-14

#include<stdio.h>
#include<math.h>
//nl(今年) = (nl(去年)+1)*(1-x)+x*21
int main()
{
	int W, N;
    double Y;
	double x;
	double d_ave;
	while (scanf("%d %lf %lf %d", &W, &Y, &x, &N) == 4)
	{
		for (int i = 0; i < N; i++)
		{
			d_ave = (1 - x)*Y + 20 * x + 1;

			Y = d_ave;//迭代
		}
		int i_ave = ceil(d_ave);
			//printf("%d\n", (int)d_ave);
		printf("%d\n", i_ave);
	}
	return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2019-03-14

#include<stdio.h>

int main()
{
    int W,N;
    float Y,x;
    int i;
    while(scanf("%d%f%f%d",&W,&Y,&x,&N)!=EOF)
    {
        for(i=0;i<N;i++)
        {
            Y=(1-x)*(Y+1)+21*x;
        }
        printf("%.f\n",ceil(Y));
    }
    return 0;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-08-21

#include <stdio.h>
#include <math.h>
float getage(int w,float y,double x,int newage)
{
	return (1-x)*(y+1)+x*newage;
}
int main()
{
    int w,n;
    float x,y;
    while(scanf("%d %f %f %d",&w,&y,&x,&n)!=EOF){
        float answer;
        while(n>0)
        {
            answer=getage(w,y,x,21);
            y=answer;
            n--;
        }
        int a=ceil(answer);
        printf("%d\n",a);
    }
    return 0;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-08-16

#include <iostream>
using namespace std;
#include <cmath>
int main(){
    int W,N;
    double Y,x;
    while(cin>>W>>Y>>x>>N){
    while(N){
        Y = (Y+1)*(1-x) +21*x;
        N--;
    }
    cout << ceil(Y) <<endl;
    }
    return 0;
}

上一题