F
2016-03-24 09:56
330 查看
题目编号:F
题目大意:有1元5元10元50元100元的纸币若干,给定的数额,求最少和最大的张数。没有则”-1 -1“输出。
解题思路:根据观察发现,求最少的很好求,求最多的倒是需要考虑很多。则通过转化可以将求最多的转化为总数减去定额的差最少,那么剩下的就是最多的。所以只要求最多的 就可以了。先创建数组2个,把1-100元的用数组表示出来和给定的张数加入另一数组。给定的额数除以最大的张数100的商与给的100张数比较,哪个小用那个,循环 其他的即可。
做题感想:本来思路是想到了,细节方面老是出错。主要是心态关系,打算1小时之内弄出来的,结果拖了1个半小时,是自己心急了,如果平心静气的写,估计细节如注意到,以 后自己在心态方面要锻炼!努力努力!
题目大意:有1元5元10元50元100元的纸币若干,给定的数额,求最少和最大的张数。没有则”-1 -1“输出。
解题思路:根据观察发现,求最少的很好求,求最多的倒是需要考虑很多。则通过转化可以将求最多的转化为总数减去定额的差最少,那么剩下的就是最多的。所以只要求最多的 就可以了。先创建数组2个,把1-100元的用数组表示出来和给定的张数加入另一数组。给定的额数除以最大的张数100的商与给的100张数比较,哪个小用那个,循环 其他的即可。
做题感想:本来思路是想到了,细节方面老是出错。主要是心态关系,打算1小时之内弄出来的,结果拖了1个半小时,是自己心急了,如果平心静气的写,估计细节如注意到,以 后自己在心态方面要锻炼!努力努力!
#include<iostream> using namespace std; int brr[]={0,1,5,10,50,100}; int main() { int a,b,c,d,e,min,max; int arr[6]; int i,j,k,sum; cin>>a; while(a--) { sum=d=e=j=min=0; cin>>b; c=b; for(i=1;i<=5;i++) { cin>>arr[i]; d+=arr[i]; sum+=brr[i]*arr[i]; } for(i=5;i>0;i--) { if(c/brr[i]<arr[i]) { j=c/brr[i]; c-=brr[i]*j; min+=j; } else { j=arr[i]; c-=j*brr[i]; min+=j; } } if(c!=0) { cout<<"-1 -1"<<endl; }else { k=sum-b; for(i=5;i>0;i--) { if(k/brr[i]<arr[i]) { j=k/brr[i]; k-=brr[i]*j; e+=j; } else { j=arr[i]; k-=j*brr[i]; e+=j; } } max=d-e; if(k==0) { cout<<min<<" "<<max<<endl; } } } return 0; }
相关文章推荐
- OCX中使用钩子HOOK消息
- IOS开发之很简单的下拉刷新,包你满意
- 最全的常用正则表达式大全
- Android性能优化:SparseArray
- NSTimer的使用方法
- oracle 复制一个表数据 到另一个表中,select into与insert into
- 数据结构之栈和队列
- 使用Service和BroadcastReceiver实时监听网络状态
- 《Linux内核设计与实现》第五章学习笔记
- MongoDB中的分组
- 调用 webapi的put和delete 报"Method Not Allowed" 405 错误。
- 动态半透膜背景的热气球漂浮登陆界面 很赞
- 你还用PPT做演示文稿吗?
- jquery.lazyload.js图片延迟加载
- Debian软件包重编译方法
- 阿里云申请幕布后在哪里查进度
- POJ3126 Prime Path(BFS)
- js入门
- cvCamShift得到掩膜内的反向投影
- ns3中antenna module