这道题比较麻烦,输出得一个一个写,也可以用变量储值
题目描述
读取一个带有两个小数位的浮点数,这代表货币价值。
在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的总数量尽可能少。
钞票的面值是 100,50,20,10,5,2。
硬币的面值是 1,0.50,0.25,0.10,0.05 和 0.01。
输入格式
输入一个浮点数 n。
输出格式
参照输出样例,输出每种面值的钞票和硬币的需求数量。
数据范围
0≤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
解法1
C++ 代码
#include<bits/stdc++.h>
using namespace std;
double r;
int c;
int main(){
printf("NOTAS:\n");
cin>>r;
c=r*100.00;
printf("%d nota(s) de R$ 100.00\n",c/10000);
c=c%10000;
printf("%d nota(s) de R$ 50.00\n",c/5000);
c=c%5000;
printf("%d nota(s) de R$ 20.00\n",c/2000);
c=c%2000;
printf("%d nota(s) de R$ 10.00\n",c/1000);
c=c%1000;
printf("%d nota(s) de R$ 5.00\n",c/500);
c=c%500;
printf("%d nota(s) de R$ 2.00\nMOEDAS:\n",c/200);
c=c%200;
printf("%d moeda(s) de R$ 1.00\n",c/100);
c=c%100;
printf("%d moeda(s) de R$ 0.50\n",c/50);
c=c%50;
printf("%d moeda(s) de R$ 0.25\n",c/25);
c=c%25;
printf("%d moeda(s) de R$ 0.10\n",c/10);
c=c%10;
printf("%d moeda(s) de R$ 0.05\n",c/5);
c=c%5;
printf("%d moeda(s) de R$ 0.01\n",c);
return 0;
}
解法2(这个方法挺好的,短一点,建议)
C++ 代码
#include<bits/stdc++.h>
using namespace std;
double r;
int a,b,c,d,e,f,g,h,i,j,k,l,m;
int main(){
cout<<"NOTAS:"<<endl;
a=r*100;
b=a/10000,c=(a%10000)/5000,d=(a%10000%5000)/2000,e=(a%10000%5000%2000)/1000,f=(a%10000%5000%2000%1000)/500;
g=(a%10000%5000%2000%1000%500)/200,h=(a%10000%5000%2000%1000%500%200)/100,i=(a%10000%5000%2000%1000%500%200%100)/50;
j=(a%10000%5000%2000%1000%500%200%100%50)/25,k=(a%10000%5000%2000%1000%500%200%100%50%25)/10;
l=(a%10000%5000%2000%1000%500%200%100%50%25%10)/5,m=a%10000%5000%2000%1000%500%200%100%50%25%10%5;
cout<<b<<" nota(s) de R$ 100.00"<<endl;
cout<<c<<" nota(s) de R$ 50.00"<<endl;
cout<<d<<" nota(s) de R$ 20.00"<<endl;
cout<<e<<" nota(s) de R$ 10.00"<<endl;
cout<<f<<" nota(s) de R$ 5.00"<<endl;
cout<<g<<" nota(s) de R$ 2.00"<<endl;
cout<<"MOEDAS:"<<endl;
cout<<h<<" moeda(s) de R$ 1.00"<<endl;
cout<<i<<" moeda(s) de R$ 0.50"<<endl;
cout<<j<<" moeda(s) de R$ 0.25"<<endl;
cout<<k<<" moeda(s) de R$ 0.10"<<endl;
cout<<l<<" moeda(s) de R$ 0.05"<<endl;
cout<<m<<" moeda(s) de R$ 0.01"<<endl;
return 0;
}