文章

【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}$。


题目分析

解题思路

  1. 首先,我们需要理解题目的核心要求:
    • 计算需要运送的次数
  2. 解题思路:
    • 计算 $y = x - 2z$,其中 $x$ 是总量,$z$ 是每次运送的固定量
    • 用 $c$ 作为每次运送的浮点数容量,计算 $y / c$ 的上整数部分
  3. 具体实现:
    • 读入两个正整数 $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 进行授权