[C/C++]找零 2019校招编程刷题
参考链接
题目描述
Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N (0 < N \le 1024)N(0<N≤1024)的商品,请问最少他会收到多少硬币?
输入描述
一行,包含一个数N。
输出描述
一行,包含一个数,表示最少收到的硬币数。
输入例子1:
200
输出例子1:
17
说明:
花200,需要找零824块,找12个64元硬币,3个16元硬币,2个4元硬币即可
思路:
题目要求计算找零硬币总数最少,就是从额度大的硬币开始找零一直到额度小的硬币找零,计算每个额度硬币数量之和即可。
Just show my code
代码(c++/c)
#include<iostream>
using namespace std;
void cal(int *money,int *n,int m){
if(*money / m > 0){
*n += *money /m;
*money %= m;
}
}
int main(){
int price; // 商品价格
cin >> price;
int n = 0; // 硬币个数
int money = 1024 - price; // 待找零钱数
cal(&money,&n,64);
cal(&money,&n,16);
cal(&money,&n,4);
cal(&money,&n,1);
cout<<n<<endl;
return 0;
}
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!