CSP-X 2018真题 | 小明的照片 luogu-B4072
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;
}本文由coderli.com原创,按照CC BY-NC-SA 4.0 进行授权
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP认证交流QQ群: 688906745
GESP/CSP 认证学习微信公众号

最后更新于