题目描述
在这个问题中,你需要读取一个整数值并将其分解为多张钞票的和,每种面值的钞票可以使用多张,并要求所用的钞票数量尽可能少。
请你输出读取值和钞票清单。
钞票的可能面值有 100,50,20,10,5,2,1。
经过实验证明:在本题中,优先使用面额大的钞票可以保证所用的钞票总数量最少。
算法一
使用%对其进行取模运算,可以取到除最高位的其他数字,使用/获取最高位
#include<iostream>
int main()
{
int money,hund,fif,twe,ten,five,two,one;
std::cin>>money;
hund=money/100;
fif=money%100/50;
twe=money%100%50/20;
ten=money%100%50%20/10;
five=money%100%50%20%10/5;
two=money%100%50%20%10%5/2;
one=money%100%50%20%10%5%2;
std::cout<<money<<'\n';
std::cout<<hund<<" nota(s) de R$ 100,00"<<'\n';
std::cout<<fif<<" nota(s) de R$ 50,00"<<'\n';
std::cout<<twe<<" nota(s) de R$ 20,00"<<'\n';
std::cout<<ten<<" nota(s) de R$ 10,00"<<'\n';
std::cout<<five<<" nota(s) de R$ 5,00"<<'\n';
std::cout<<two<<" nota(s) de R$ 2,00"<<'\n';
std::cout<<one<<" nota(s) de R$ 1,00";
return 0;
}