XYNUOJ 1259: 找零钱
2017-08-01 16:51
155 查看
1259: 找零钱
时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 9
[提交][状态][讨论版]
题目描述
小智去超市买东西,买了不超过一百块的东西。收银员想尽量用少的纸币来找钱。纸币面额分为50 20 10 5 1 五种。请在知道要找多少钱n给小明的情况下,输出纸币数量最少的方案。 1<=n<=99;
输入
有多组数据 1<=n<=99;
输出
对于每种数量不为0的纸币,输出他们的面值*数量,再加起来输出
样例输入
25
32
样例输出
20*1+5*1
20*1+10*1+1*2
提示
来源
进阶题-贪心算法#include<stdio.h> #include<string.h> int main(){ int a,b,c,d,e,n; int T[60]; while(~scanf("%d",&n)) { memset(T,0,sizeof(T)); a=n/50;//50的有几张 b=(n-50*a)/20;//20的有几张 c=(n-50*a-20*b)/10;//10的有几张 d=(n-50*a-20*b-10*c)/5;//5的有几张 e=(n-50*a-20*b-10*c-5*d)/1;//1的有几张 T[50]=a,T[20]=b,T[10]=c,T[5]=d,T[1]=e; for(int i=50;i>0;i--) { if(T[i]!=0) { printf("%d*%d",i,T[i]); T[i]=0; break; } } for(int i=50;i>0;i--) { if(T[i]!=0) { printf("+%d*%d",i,T[i]); } } printf("\n"); } return 0; }
#include<stdio.h> int main() { int n,a[5]={50,20,10,5,1},m; while(scanf("%d",&n)!=EOF) { m=n; int t=0,x,y,h; for(int i=0;i<5;i++) { x=n/a[i]; y=n%a[i]; n=y; if(x!=0) { t=t+x*a[i]; h=m-t; printf("%d*%d",a[i],x); if(h!=0) printf("+"); } } printf("\n"); } }
相关文章推荐
- xynuoj 可分割背包问题 酒馆浪人的博客
- XYNUOJ 1095 折半查找
- 迷宫寻宝(一)xynuoj1857 && nyoj82
- xynuOJ 铺砖
- XYNUOJ 1252: NOIP2007普及组第2题 纪念品分组
- XYNUOJ 问题 G: 火力覆盖
- XYNUOJ 问题 F: 小希的迷宫
- XYNUOJ 1106 1107 求最大公约数 求最小公倍数
- xynuoj 洗牌问题
- XYNUOJ 1428: 庆功会
- XYNUOJ 1256 喷水装置(一)—贪心算法
- XYNUOJ 1116 字符串排序输出
- XYNUOJ 1435 混合背包
- XYNUOJ Six Degrees of Separation
- XYNUOJ 第四次考试 Train
- XYNUOJ 1078 连续自然数的阶乘求和
- XYNUOJ 1181移动数据
- XYNUOJ 24 Point game 搜索
- XYNUOJ 最长公共子序列
- XYNUOJ 天明的智商