人民币支付"/>
13:人民币支付
预计阅读时间:5分钟
题目
描述
从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。
输入
一个小于1000的正整数。
输出
输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数
样例输入
735
样例输出
7
0
1
1
1
0
题目分析
简单易懂,没什么好分析的。
思路
本人用了两个办法,一个是用减法来做,效率不是很高,但也对了;另一个是用取模来做,这个效率高很多,是个不错的办法。当然两个都对。
参考代码
两个办法都对。
方法一:笨办法
#include <iostream>
using namespace std;
int main()
{int n;int c100=0,c50=0,c20=0,c10=0,c5=0,c1=0;cin>>n;while(n>=100){n-=100;c100++;}while(n>=50){n-=50;c50++;}while(n>=20){n-=20;c20++;}while(n>=10){n-=10;c10++;}while(n>=5){n-=5;c5++;}while(n>=1){n--;c1++;}cout<<c100<<'\n'<<c50<<'\n'<<c20<<'\n'<<c10<<'\n'<<c5<<'\n'<<c1<<'\n'<<endl;return 0;
}
方法二:好办法
#include <iostream>
using namespace std;
int main()
{int n;int c100=0,c50=0,c20=0,c10=0,c5=0,c1=0;cin>>n;while(n>0){if(n>=100){c100+=n/100;n%=100;}else if(n>=50){c50+=n/50;n%=50;}else if(n>=20){c20+=n/20;n%=20;}else if(n>=10){c10+=n/10;n%=10;}else if(n>=5){c5+=n/5;n%=5;}else if(n>=1){c1+=n;n=0;}}cout<<c100<<'\n'<<c50<<'\n'<<c20<<'\n'<<c10<<'\n'<<c5<<'\n'<<c1<<'\n'<<endl;return 0;
}
希望本博客对大家有所帮助!
更多推荐
13:人民币支付
发布评论