1 条题解
-
0
自动搬运
来自洛谷,原作者为

chen_zhe
Aya 敲可爱的~搬运于
2025-08-24 21:15:05,当前版本为作者最后更新于2023-06-22 20:34:35,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
小 A 要购买一件价值为 元的商品,而他的手上有 元现金。由于现金可能不够,他可能需要去银行提款。自动取款机可以提供无限张 元纸币。现在小 A 告诉了你 和 ,他希望知道他至少要取多少张 元纸币,才能买下这个商品。
这道题的关键在于如何计算出至少要取多少张 元纸币。
如果我要买 元的商品,我现在有 元现金,我要取多少张纸币呢? 张,是 元,不够; 张是 元,够用了。如果是买 元的商品,有 元的现金,那么我们只要取 张纸币就够了。
这样分析,我们会想到用除法来解决这个问题。我们目前差多少钱?,一张纸币 元,。有余数,说明我们需要多用一张纸币。而 ,,没有余数,就不要多用一张纸币了。
因此我们可以使用一个
if判断完成这一道题。但是有没有更好的解决方案呢?有!有余数,说明需要多用一张纸币。换而言之,只要余数大于等于 ,就需要多用一张纸币。我能不能直接把这个多出来的余数 凑掉呢?可以的,我们只要给被除数加上 就行了!例如说,如果 ,加上 变成了 ,,恰好和前面用余数分类讨论的结果是一样的。
而且我们惊人的发现,这是通用的解法。比如说 元的差价,无论是看有没有余数,还是直接加上 后除以 ,最后算出来的结果都是 ;而且哪怕当差价为整百数的时候,例如说差价为 元,加上 变成 ,而 除以 的商是 ,也是符合的。因此,我们只要输出 就能完成这个题了。
但是这个题还有一个坑点!数据范围中,。这意味着什么?
int的存储范围大概是负 亿到正 亿,而题目中的范围更大。因此,需要使用long long类型进行存储。方法 1:使用
if语句:#include <iostream> using namespace std; int main() { long long a,b; cin >> a >> b; if ((a-b)%100!=0) cout << (a-b)/100+1; else cout << (a-b)/100; return 0; }方法 2:使用 做法:
#include <iostream> using namespace std; int main() { long long a,b; cin >> a >> b; cout << (a-b+99)/100 << endl; return 0; }
- 1
信息
- ID
- 8501
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者