题解 B3793 [NICA #1] 自动取款机
小 A 要购买一件价值为
a 元的商品,而他的手上有b 元现金。由于现金可能不够,他可能需要去银行提款。自动取款机可以提供无限张100 元纸币。现在小 A 告诉了你a 和b ,他希望知道他至少要取多少张100 元纸币,才能买下这个商品。
这道题的关键在于如何计算出至少要取多少张
如果我要买
这样分析,我们会想到用除法来解决这个问题。我们目前差多少钱?
因此我们可以使用一个 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;
}