首页 / 算法 / 钞票与硬币问题——算法
钞票与硬币问题——算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了钞票与硬币问题——算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1867字,纯文字阅读大概需要3分钟。
内容图文
![钞票与硬币问题——算法](/upload/InfoBanner/zyjiaocheng/645/f34410cc68b3426fb68c340df790588d.jpg)
钞票和硬币
问题描述
读取一个带有两个小数位的浮点数,这代表货币价值。
在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的数量尽可能少。
钞票的面值是100,50,20,10,5,2。
硬币的面值是1,0.50,0.25,0.10,0.05和0.01。
输入格式
输入一个浮点数N。
输出格式
参照输出样例,输出每种面值的钞票和硬币的需求数量。
数据范围
0≤N≤1000000.000≤N≤1000000.00
输入样例:
576.73
输出样例:
NOTAS: 5 nota(s) de R$ 100.00 1 nota(s) de R$ 50.00 1 nota(s) de R$ 20.00 0 nota(s) de R$ 10.00 1 nota(s) de R$ 5.00 0 nota(s) de R$ 2.00 MOEDAS: 1 moeda(s) de R$ 1.00 1 moeda(s) de R$ 0.50 0 moeda(s) de R$ 0.25 2 moeda(s) de R$ 0.10 0 moeda(s) de R$ 0.05 3 moeda(s) de R$ 0.01
问题分析
此题增加了小数的分解,将小数逐一分解应,就要考虑到浮点数如何取余问题,以及浮点数取整问题
代码实现
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){
//读取一个带有两个小数位的浮点数,这代表货币价值。
double m;//钱
cin>>m;
int mm=m*100;//将钱扩大100倍
int a[] = {10000, 5000, 2000, 1000, 500, 200};
int b[] = {100, 50, 25, 10, 5, 1};
cout<<"NOTAS:" <<endl;
for(int i=0;i<6;i++){
cout<<mm/a[i]<<" nota(s) de R$ "<<fixed<<setprecision(2)<<a[i]/100.00<<endl;
mm=mm%a[i];
}
cout<<"MOEDAS:" <<endl;
for(int i=0;i<6;i++){
cout<<mm/b[i]<<" moeda(s) de R$ "<<fixed<<setprecision(2)<<b[i]/100.00<<endl;
mm=mm%b[i];
}
return 0;
}
运行结果
541.26
NOTAS:
5 nota(s) de R$ 100.00
0 nota(s) de R$ 50.00
2 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
0 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
0 moeda(s) de R$ 0.50
1 moeda(s) de R$ 0.25
0 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
1 moeda(s) de R$ 0.01
总结
空 白 发布了47 篇原创文章 · 获赞 5 · 访问量 3627 私信 关注对于该题,采用了循环的方式,对数进行拆解。以及题目给明小数两位数,那么将原数字扩大
100倍
,且,所又金额面额同时扩大100倍
,再通过输出精度控制,实现了浮点数的取余与取整。
内容总结
以上是互联网集市为您收集整理的钞票与硬币问题——算法全部内容,希望文章能够帮你解决钞票与硬币问题——算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。