(C语言)华为OD机考:统一考试 C卷 + D卷 + B卷 +A卷
目前在考C卷,经过两个月的收集整理,C卷真题已整理完毕
抽到原题的概率为2/3到3/3,也就是最少抽到两道原题。请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。
真题目录:【C语言题解版】华为 OD 机试 C卷抽中题库清单(全真题库)含考点说明
专栏:(C语言)最新华为OD机试C卷+D卷+AB卷
题目描述
某公司部门需要派遣员工去国外做项目。
现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工。
部门每个员工有一个员工号(1,2,3,…),工号连续,从1开始。
部长派遣员工的规则:
- 规则1:从 [1, k] 中选择员工派遣出去
- 规则2:编号为 x 的倍数的员工不能去 x 国,编号为 y 的倍数的员工不能去 y 国。
问题:
找到最小的 k,使得可以将编号在 [1, k] 中的员工分配给 x 国和 y 国,且满足 x 国和 y 国的需求。
输入描述
四个整数 x,y,cntx,cnty。
- 2 ≤ x < y ≤ 30000
- x 和 y 一定是质数
- 1 ≤ cntx, cnty < 10^9
- cntx + cnty ≤ 10^9
输出描述
满足条件的最小的k
用例
输入 | 2 3 3 1 |
---|---|
输出 | 5 |
说明 | 输入说明:2 表示国家代号23 表示国家代号33 表示国家2需要3个人1 表示国家3需要1个人 |
解题思路
题目的问题是:要找到一个最小的k,使得在遵守上述规则的情况下,可以从编号在[1, k]中的员工中选择足够的员工派遣到x国和y国,满足他们的需求。
输入数据的解释如下:
- 2 表示员工的ID如果是2的倍数,就不能派遣到国家X。
- 3 表示员工的ID如果是3的倍数,就不能派遣到国家Y。
- 3 表示国家X需要3个员工。
- 1 表示国家Y需要1个员工。
我们需要找到一个最小的员工ID,使得在[1, ID]的范围内,能够找到至少3个可以派遣到国家X的员工和至少1个可以派遣到国家Y的员工。
在这个例子中,员工ID为5是满足条件的最小值。因为在[1, 5]的范围内,