653. 钞票(第一讲 变量、输入输出、表达式与顺序语句)
题目描述
在这个问题中,你需要读取一个整数值并将其分解为多张钞票的和,每种面值的钞票可以使用多张,并要求所用的钞票数量尽可能少。
请你输出读取值和钞票清单。
钞票的可能面值有 100,50,20,10,5,2,1100,50,20,10,5,2,1。
样例
输入格式
输入一个整数$N$。
输出格式
参照输出样例,输出读取数值以及每种面值的钞票的需求数量。
数据范围
$0<N<10000000<N<1000000$
输入样例:
576
输出样例:
576
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
1 nota(s) de R$ 1,00
算法1
(顺序结构)
C++ 代码
#include <cstdio>
using namespace std;
int main() {
int n;
scanf("%d", &n);
printf("%d\n", n);
printf("%d nota(s) de R$ 100,00\n", n / 100);
n %= 100;
printf("%d nota(s) de R$ 50,00\n", n / 50);
n %= 50;
printf("%d nota(s) de R$ 20,00\n", n / 20);
n %= 20;
printf("%d nota(s) de R$ 10,00\n", n / 10);
n %= 10;
printf("%d nota(s) de R$ 5,00\n", n / 5);
n %= 5;
printf("%d nota(s) de R$ 2,00\n", n / 2);
n %= 2;
printf("%d nota(s) de R$ 1,00\n", n);
return 0;
}
算法2
(循环结构)
C++ 代码
#include <cstdio>
using namespace std;
int main()
{
double n;
int a[6] = {100,50,20,10,5,2};
int b[6] = {100,50,25,10,5,1};
cin>>n;
int m = n * 100;
printf("NOTAS:\n");
for (int i=0;i<6;i++)
{
printf("%d nota(s) de R$ %.2lf\n", m/(a[i]*100), (double)a[i]);
m %= a[i] * 100;
}
printf("MOEDAS:\n");
for (int i=0;i<6;i++)
{
printf("%d moeda(s) de R$ %.2lf\n", m/b[i], b[i]/100.0);
m %= b[i];
}
return 0;
}
优秀兄弟