656.钞票和硬币
读取一个带有两个小数位的浮点数,这代表货币价值。
在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的数量尽可能少。
钞票的面值是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
//取余运算必须是两个整数
//总结分离小数部分与整数部分的方法
#include <cstdio>
int main()
{
double n;
int n1, n2;
scanf("%lf", &n);
n = (int)(n * 100);
n1 = n / 100;
n2 = n - n1 * 100; //注意这里是减去n1 * 100
printf("NOTAS:\n");
printf("%d nota(s) de R$ 100.00\n", n1 / 100);
n1 = n1 % 100;
printf("%d nota(s) de R$ 50.00\n", n1 / 50);
n1 = n1 % 50;
printf("%d nota(s) de R$ 20.00\n", n1 / 20);
n1 = n1 % 20;
printf("%d nota(s) de R$ 10.00\n", n1 / 10);
n1 = n1 % 10;
printf("%d nota(s) de R$ 5.00\n", n1 / 5);
n1 = n1 % 5;
printf("%d nota(s) de R$ 2.00\n", n1 / 2);
printf("MOEDAS:\n");
n1 = n1 % 2;
printf("%d moeda(s) de R$ 1.00\n", n1);
printf("%d moeda(s) de R$ 0.50\n", n2 / 50);
n2 = n2 % 50;
printf("%d moeda(s) de R$ 0.25\n", n2 / 25);
n2 = n2 % 25;
printf("%d moeda(s) de R$ 0.10\n", n2 / 10);
n2 = n2 % 10;
printf("%d moeda(s) de R$ 0.05\n", n2 / 5);
n2 = n2 % 5;
printf("%d moeda(s) de R$ 0.01\n", n2);
return 0;
}