出题人题解,本题为 2023 年 2 月语言月赛 B 题。
题目大意
很好理解,先贴个题面
题目是说:有甲乙两个仓库,得知甲仓库货物的重量以及甲乙之间的关系。现有一辆承重有限的货车要运送完乙仓库的所有货物,求需要运多少次。
题目分析
小学数学题。
思路主要分为两步:首先求出乙仓库有多少升啤酒,再计算货车要运这些货物多少次。
第一步:甲原来有 x x x 升,如果甲给乙 z z z 升,则甲乙啤酒容量相等。显然答案就是 x − 2 z x - 2z x−2z。
第二步:设乙仓库的升数为 y y y 众所周知,答案是 ⌈ y c ⌉ \left\lceil\dfrac{y}{c}\right\rceil ⌈cy⌉ ,幸运的是,ceil 函数正好可以承担这份责任,即 ceil( y / c y / c y/c)。
这题有一个坑点:要使用 long long!不使用 long long 只有 80 80 80 分!
核心代码:
y = x - 2 * z;
cout << ceil(y / c);