B3933 [语言月赛 202402] 分配工资

· · 题解

Source & Knowledge

2024 年 2 月语言月赛,由洛谷网校入门计划/基础计划提供。

题目大意

某场比赛薪酬 m 元,有两位出题人。给定 n 道题目各自的工资权重(用于计算比例)和出题人,求 2 号出题人拿到的工资。

题目分析

我们只需要计算出两位出题人的「题目的工资权重」的总和,之后按照总和分配即可。

使用两个整数变量 x, y 记录权重总和,使用 for 循环计算,核心代码如下:

int x = 0, y = 0;
for (int i = 1; i <= n; ++i) {
    int a, b;
    cin >> a >> b;
    if (a == 1) {
        x += b;
    } else {
        y += b;
    }
}

之后,只需要将 m 元工资按照 x : y 的比例分红即可。2 号出题人拿到的工资为 m \times \dfrac{y}{x + y}

double ans = ((double) m) * y / (x + y);

最后输出 ans 即可。在 printf 中,可以使用格式化字符串 %.3f。这个格式化字符串告诉 printf 函数要输出一个浮点数,并且保留三位小数。

printf("%.3lf\n", ans);

视频讲解