c语言题目内容:小明现在有x元,现在想买一件y(y≤x)元的物品,商店里有五种货币,100元、20元、10元、5元、1元无限张,服务员会以最少的 数量 找零钱。问小明用x元买了一件y元的物品后找了多少张零钱。
时间: 2024-04-30 17:17:40 浏览: 242
题目分析:
这道题需要我们用到贪心算法来解决。我们可以从大到小依次考虑使用每种面值的货币,每次尽可能使用当前面值的货币,直到找完为止。
具体实现:
1. 用 `change` 表示找零的总额,初始值为 `x - y`。
2. 定义一个数组 `coins` 存储五种面值的货币。
3. 遍历 `coins` 数组,对于每个面值 `coin`,计算当前找零中可以使用的该面值货币的最大张数 `count`,然后将 `count` 加入到答案中。
4. 将 `change` 减去已经找零的金额 `coin * count`,并更新 `count`。
5. 重复步骤 3 和步骤 4,直到 `change` 的值为 0。
6. 输出答案。
C 语言代码实现:
```c
#include <stdio.h>
int main() {
int x, y, change, coins[] = {100, 20, 10, 5, 1};
scanf("%d%d", &x, &y);
change = x - y;
int ans = 0;
for (int i = 0; i < 5; i++) {
int count = change / coins[i];
ans += count;
change -= coins[i] * count;
}
printf("%d\n", ans);
return 0;
}
```
输入格式:
第一行包含两个整数 `x` 和 `y`,表示小明手上的钱和物品的价格。
输出格式:
输出一个整数,表示找零的最少张数。
阅读全文