C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【CSP】CSP-X 2018真题 | 小明的照片 luogu-B4072 (适合GESP一级及以上考生练习)
CSP-X 2018真题-小明的照片,一道纯粹的数学计算题,考察基本的输入输出与加减法运算。适合GESP一级及以上考生练习,难度⭐。
B4072 [CSP-X 2018] 小明的照片
题目要求
题目描述
国庆假期,小明和爸爸妈妈一起外出旅游,沿途拍摄了很多美丽的风景照片,在返程的前一天晚上,他整理了一下所有的照片:手机里有 张,平板电脑里有 张,单反相机里有 张。小明计划开学后拿出 张照片与同学们分享,请问他至少还需要再拍摄多少张照片?
输入格式
一行,四个正整数 ,中间用空格隔开。
输入的数据保证现有的照片总数不超过 。
输出格式
一行,只有一个整数,表示还需要再拍摄的照片数量。
输入输出样例 #1
输入 #1
30 8 2 10
输出 #1
10
说明/提示
原题没有数据范围,我们将给出合理的数据范围。
对于 的数据,保证 。
题目分析
本题是一道极其简单的数学计算题,属于入门级别的签到题,考察的核心是对题意的理解以及基本的加减运算。
解题思路分析:
-
理解题意:
- 小明手上现在有三台设备拍摄的照片,总数为 。
- 他需要凑齐 张照片与同学分享。
- 题目保证了现有照片总数不超过 ,即 。
- 求的是还差多少张照片,即 。
-
计算公式:
- 答案直接为:
- 由于题目保证了 ,因此结果一定是非负整数,不需要特殊处理。
-
数据类型注意:
- 由于 最大可达 ,在
int类型的表示范围(约 )之内,所以使用int即可。 - 但加法 三个数最大各为 ,相加最大可能达到 ,超出了
int的范围。为了代码的安全性和良好编程习惯,可以改用减法来避免溢出:先用 减去 ,再减去 ,最后减去 ,即n - x - y - z,这样中间结果始终不超过 的值,不会发生溢出。
- 由于 最大可达 ,在
复杂度分析:
- 时间复杂度:,只需一次加减运算。
- 空间复杂度:,只使用几个整型变量。
示例代码
#include <iostream>
int main() {
int n, x, y, z;
std::cin >> n >> x >> y >> z;
// 直接计算差值,用连续减法避免中间结果溢出
std::cout << n - x - y - z << std::endl;
return 0;
}
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
【CSP】CSP-J 2019 江西真题 | 面积 luogu-P5681 (适合GESP一级、二级考生练习)
CSP-J 2019江西省真题- 面积,基本的四则运算与分支结构考点,重点考察对于数据范围带来的整型溢出问题的理解与防范,适合GESP一级、二级及以上考生练习,难度☆,洛谷难度等级入门。
【CSP】CSP-X 2018真题 | 快递费用 luogu-B4073 (适合GESP二级及以上考生练习)
CSP-X 2018真题-快递费用,一道结合分支判断与简单数学运算的入门题目,考察条件语句(或数组映射)和向上取整的处理技巧。适合GESP二级及以上考生练习,难度⭐☆。
【CSP】CSP-X 2018真题 | 11的倍数 luogu-B4075 (适合GESP三级及以上考生练习)
CSP-X 2018真题-11的倍数,一道结合字符串处理与数学整除性判定的题目,考察对大整数的按位处理以及模运算的应用。由于数据位数可达100位,需要用字符串代替整型变量来处理输入。适合GESP三级及以上考生练习,难度⭐⭐。
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com