Algorithm

Problem Details -

URI Online Judge | 1021

Banknotes and Coins

By Neilor Tonin, URI  Brazil

Timelimit: 1

Read a value of floating point with two decimal places. This represents a monetary value. After this, calculate the smallest possible number of notes and coins on which the value can be decomposed. The considered notes are of 100, 50, 20, 10, 5, 2. The possible coins are of 1, 0.50, 0.25, 0.10, 0.05 and 0.01. Print the message “NOTAS:” followed by the list of notes and the message “MOEDAS:” followed by the list of coins.

Input

The input file contains a value of floating point (0 ≤ ≤ 1000000.00).

Output

Print the minimum quantity of banknotes and coins necessary to change the initial value, as the given example.

 Input Sample Output Sample 576.73 NOTAS:5 nota(s) de R\$ 100.001 nota(s) de R\$ 50.001 nota(s) de R\$ 20.000 nota(s) de R\$ 10.001 nota(s) de R\$ 5.000 nota(s) de R\$ 2.00MOEDAS:1 moeda(s) de R\$ 1.001 moeda(s) de R\$ 0.500 moeda(s) de R\$ 0.252 moeda(s) de R\$ 0.100 moeda(s) de R\$ 0.053 moeda(s) de R\$ 0.01
 4 NOTAS:0 nota(s) de R\$ 100.000 nota(s) de R\$ 50.000 nota(s) de R\$ 20.000 nota(s) de R\$ 10.000 nota(s) de R\$ 5.002 nota(s) de R\$ 2.00MOEDAS:0 moeda(s) de R\$ 1.000 moeda(s) de R\$ 0.500 moeda(s) de R\$ 0.250 moeda(s) de R\$ 0.100 moeda(s) de R\$ 0.050 moeda(s) de R\$ 0.01
 91.01 NOTAS:0 nota(s) de R\$ 100.001 nota(s) de R\$ 50.002 nota(s) de R\$ 20.000 nota(s) de R\$ 10.000 nota(s) de R\$ 5.000 nota(s) de R\$ 2.00MOEDAS:1 moeda(s) de R\$ 1.000 moeda(s) de R\$ 0.500 moeda(s) de R\$ 0.250 moeda(s) de R\$ 0.100 moeda(s) de R\$ 0.051 moeda(s) de R\$ 0.01

Code Examples

#1 Code Example with C Programming

```Code - C Programming```

``````#include <stdio.h>

int main() {
int n100, n50, n20, n10, n5, n2;
int m1, m50, m25, m10, m05, m01;
double n;

scanf("%lf", &n);
int notas = n;
int moedas = (n - notas) * 100;

if( (moedas * 1000) % 10 == 9) {
moedas++;
}

n100 = notas/100;
notas = notas%100;
n50 = notas/50;
notas = notas%50;
n20 = notas/20;
notas = notas%20;
n10 = notas/10;
notas = notas%10;
n5 = notas/5;
notas = notas%5;
n2 = notas/2;
notas = notas%2;

m1 = notas/1;
notas = notas%1;
m50 = moedas/50;
moedas = moedas%50;
m25 = moedas/25;
moedas = moedas%25;
m10 = moedas/10;
moedas = moedas%10;
m05 = moedas/5;
moedas = moedas%5;
m01 = moedas/1;

printf("NOTAS:\n");

printf("%d nota(s) de R\$ 100.00\n", n100);
printf("%d nota(s) de R\$ 50.00\n", n50);
printf("%d nota(s) de R\$ 20.00\n", n20);
printf("%d nota(s) de R\$ 10.00\n", n10);
printf("%d nota(s) de R\$ 5.00\n", n5);
printf("%d nota(s) de R\$ 2.00\n", n2);

printf("MOEDAS:\n");

printf("%d moeda(s) de R\$ 1.00\n", m1);
printf("%d moeda(s) de R\$ 0.50\n", m50);
printf("%d moeda(s) de R\$ 0.25\n", m25);
printf("%d moeda(s) de R\$ 0.10\n", m10);
printf("%d moeda(s) de R\$ 0.05\n", m05);
printf("%d moeda(s) de R\$ 0.01\n", m01);

return 0;
}``````
Copy The Code &

Input

cmd
576.73

#2 Code Example with C++ Programming

```Code - C++ Programming```

``````#include <iostream>
using namespace std;

int main() {
double n100, n50, n20, n10, n5, n2;
double m1, m50, m25, m10, m05, m01;
double n;

cin >> n;
int notas = n;
int moedas = (n - notas) * 100;

if((moedas * 1000) % 10 == 9){
moedas++;
}

n100 = notas/100;
notas = notas%100;
n50 = notas/50;
notas = notas%50;
n20 = notas/20;
notas = notas%20;
n10 = notas/10;
notas = notas%10;
n5 = notas/5;
notas = notas%5;
n2 = notas/2;
notas = notas%2;

m1 = notas/1;
notas = notas%1;
m50 = moedas/50;
moedas = moedas%50;
m25 = moedas/25;
moedas = moedas%25;
m10 = moedas/10;
moedas = moedas%10;
m05 = moedas/5;
moedas = moedas%5;
m01 = moedas/1;

cout << "NOTAS:" << endl;
cout << n100 << " nota(s) de R\$ 100.00" << endl;
cout << n50 << " nota(s) de R\$ 50.00" << endl;
cout << n20 << " nota(s) de R\$ 20.00" << endl;
cout << n10 << " nota(s) de R\$ 10.00" << endl;
cout << n5 << " nota(s) de R\$ 5.00" << endl;
cout << n2 << " nota(s) de R\$ 2.00" << endl;
cout << "MOEDAS:" << endl;
cout << m1 << " moeda(s) de R\$ 1.00" << endl;
cout << m50 << " moeda(s) de R\$ 0.50" << endl;
cout << m25 << " moeda(s) de R\$ 0.25" << endl;
cout << m10 << " moeda(s) de R\$ 0.10" << endl;
cout << m05 << " moeda(s) de R\$ 0.05" << endl;
cout << m01 << " moeda(s) de R\$ 0.01" << endl;

return 0;
}``````
Copy The Code &

Input

cmd
4.00

#3 Code Example with Java Programming

```Code - Java Programming```

``````import java.util.Scanner;

public class Main
{

public static void main(String[] args)
{
float x;
int note100,note50,note20,note10,note5,note2;
int moeda1,moeda5,moeda25,moeda10,moeda05,moeda01;
int reminder100;
Scanner input=new Scanner(System.in);
x = input.nextFloat();
note100 =(int) x / 100;
reminder100 = (int) (x % 100);
note50 = (reminder100) / 50;
note20 = (reminder100 % 50 )/ 20;
note10 = ((reminder100 % 50 )% 20) / 10;
note5 = (((reminder100 % 50 )% 20) % 10) / 5;
note2 = (((reminder100 % 50 )% 20) % 5) / 2;

//------     MOEDAS:    ------------//
moeda1 =  (((((reminder100 % 50 )% 20) % 5) % 2) / 1);
float reminderMoeda = (float) (((((reminder100 % 50 )% 20) % 5) % 2));

float meda5Float = (float) ((reminderMoeda % 1) / .5);
moeda5 = (int) (meda5Float);

moeda25 = (int) (((((((reminder100 % 50 )% 20) % 5) % 2) % 1) % .5) / .25);
moeda10 = (int) ((((((((reminder100 % 50 )% 20) % 5) % 2) % 1) % .5) % .25) / .1);
moeda05 = (int) (((((((((reminder100 % 50 )% 20) % 5) % 2) % 1) % .5) % .25) % .1) / .05);
moeda01 = (int) ((((((((((reminder100 % 50 )% 20) % 5) % 2) % 1) % .5) % .25) % .1) % .05) / .01);

System.out.print("NOTAS:\n");
System.out.print(note100 +" nota(s) de R\$ 100.00\n");
System.out.print(note50 +" nota(s) de R\$ 50.00\n");
System.out.print(note20 +" nota(s) de R\$ 20.00\n");
System.out.print(note10 +" nota(s) de R\$ 10.00\n");
System.out.print(note5 +" nota(s) de R\$ 5.00\n");
System.out.print(note2 +" nota(s) de R\$ 2.00\n\n");

System.out.print("MOEDAS:\n");
System.out.print(moeda1 +" moeda(s) de R\$ 1.00\n");
System.out.print(meda5Float +" moeda(s) de R\$ 0.50\n");
System.out.print(moeda25 +" moeda(s) de R\$ 0.25\n");
System.out.print(moeda10 +" moeda(s) de R\$ 0.10\n");
System.out.print(moeda05 +" moeda(s) de R\$ 0.05\n");
System.out.print(moeda01 +" moeda(s) de R\$ 0.01\n");

}

}``````
Copy The Code &

Input

cmd
91.01

#4 Code Example with Python Programming

```Code - Python Programming```

``````value = eval(input());

cem = cinquenta = vinte = dez = cinco = dois = um = 0;
cincents = vintecincents = dezcents = cincocents = cents = 0;

value = float("%.2f" % value)
if int(value/100) >= 1:
cem = int(value/100);
value -= cem*100;

value = float("%.2f" % value)
if int(value/50) >= 1:
cinquenta = int(value/50);
value -= cinquenta*50;

value = float("%.2f" % value)
if int(value/20) >= 1:
vinte = int(value/20.00);
value -= vinte*20;

value = float("%.2f" % value)
if int(value/10) >= 1:
dez = int(value/10);
value -= dez*10.00;

value = float("%.2f" % value)
if int(value/5) >= 1:
cinco = int(value/5);
value -= cinco*5;

value = float("%.2f" % value)
if int(value/2) >= 1:
dois = int(value/2);
value -= dois*2;

value = float("%.2f" % value)
if int(value/1) >= 1:
um = int(value/1);
value -= um*1;

value = float("%.2f" % value)
if int(value/0.50) >= 1:
cincents = int(value/0.50);
value -= cincents*0.50;

value = float("%.2f" % value)
if int(value/0.25) >= 1:
vintecincents = int(value/0.25);
value -= vintecincents*0.25;

value = float("%.2f" % value)
if int(value/0.10) >= 1:
dezcents = int(value/0.10);
value -= dezcents*0.10;

value = float("%.2f" % value)
if int(value/0.05) >= 1:
cincocents = int(value/0.05);
value -= cincocents*0.05;

value = float("%.2f" % value)
if int(value/0.01) >= 0.998:
cents = int(value/0.01);
value -= cents*0.01;

print("NOTAS:");
print("%d nota(s) de R\$ 100.00" % cem);
print("%d nota(s) de R\$ 50.00" % cinquenta);
print("%d nota(s) de R\$ 20.00" % vinte);
print("%d nota(s) de R\$ 10.00" % dez);
print("%d nota(s) de R\$ 5.00" % cinco);
print("%d nota(s) de R\$ 2.00" % dois);

print("MOEDAS:");
print("%d moeda(s) de R\$ 1.00" % um);
print("%d moeda(s) de R\$ 0.50" % cincents);
print("%d moeda(s) de R\$ 0.25" % vintecincents);
print("%d moeda(s) de R\$ 0.10" % dezcents);
print("%d moeda(s) de R\$ 0.05" % cincocents);
print("%d moeda(s) de R\$ 0.01" % cents);``````
Copy The Code &

Input

cmd
4.00