【GESP】C++二级练习 luogu-B3706 [语言月赛202302] 晚秋绝诗
GESP二级练习,数学函数练习,难度★☆☆☆☆。
luogu-B3706 [语言月赛202302] 晚秋绝诗
题目要求
题目描述
诗人有两个仓库。甲仓库有 $x$ 升啤酒,乙仓库有若干升啤酒,如果甲仓库给予乙仓库 $z$ 升啤酒,那么甲乙两仓库的啤酒体积相等。
现有一辆最多可以运输 $c$ 升啤酒的卡车来运送乙仓库的所有啤酒,请问至少要运多少次?
输入格式
输入共两行。
输入的第一行,两个正整数 $x, z$。
输入的第二行,一个浮点数 $c$。
输出格式
输出一行一个整数,输出要运多少次。
输入 #1
1
2
5 1
1.5
输出 #1
1
2
输入 #2
1
2
1000000000000 2
99.435
输出 #2
1
10056821039
数据规模与约定
对于 $20\%$ 的测试数据,保证 $z = 0$;
对于 $30\%$ 的测试数据,保证 $c$ 是整数;
对于 $100\%$ 的测试数据,满足 $0 \leq z \leq 10^{12}$,$2z < x \leq 10^{18}$,$1 \leq c \leq 10^{18}$。
题目分析
解题思路
- 首先,我们需要理解题目的核心要求:
- 计算需要运送的次数
- 解题思路:
- 计算 $y = x - 2z$,其中 $x$ 是总量,$z$ 是每次运送的固定量
- 用 $c$ 作为每次运送的浮点数容量,计算 $y / c$ 的上整数部分
- 具体实现:
- 读入两个正整数 $x$ 和 $z$
- 读入一个浮点数 $c$
- 计算 $y = x - 2z$
- 输出 $y / c$ 的上整数部分
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cmath>
#include <iostream>
using namespace std;
int main() {
long long x, z; // 定义两个长整型变量 x 和 z
cin >> x >> z; // 从标准输入读取 x 和 z 的值
double c; // 定义一个双精度浮点数变量 c
cin >> c; // 从标准输入读取 c 的值
long long y = x - 2 * z; // 计算 y 的值
cout << ceil(y / c); // 输出 y 除以 c 的上整数部分
return 0; // 返回 0,表示程序正常结束
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权