Troco do caixa

Elabore um algoritmo para determinar as cédulas do saque em um terminal de autoatendimento bancário. O algoritmo receberá o valor de deve ser entregue, seguido dos tipos de cédula. O terminal deve entregar o menor número de cédulas possível, mas com pelo menos uma cédula de cada tipo solicitado. Considere que o sempre existirá uma solução possível.

Por exemplo, se o valor for de R$ 100,00 e forem solicitadas cédulas de R$ 20,00 e R$ 10,00, o caixa deverá entregar 4 cédulas de R$ 20,00 e 2 cédulas de R$ 10,00. Nunca seriam solicitadas as cédulas de R$ 50,00 e R$ 20,00 pois não existiria solução possível com as restrições apresentadas.

Código em Python

total = int(input()) #total a ser sacada
nota1 = int(input()) #primeiro tipo de nota
nota2 = int(input()) #segundo tipo de nota

#int() pega apenas a parte inteira da divisão
notas1 = int(total / nota1)
#desconta o que já foi dado em notas de 100
total = total - (notas1 * nota1) 
#faz o mesmo para a outra nota
notas2 = int(total / nota2)

print "Notas de ", nota1, ": ", notas1
print "Notas de ", nota2, ": ", notas2

Teste o código: http://www.codeskulptor.org/#user43_Zo0wEeOtyz_0.py

Código em C/C++

#include <stdio.h>

int main(void) {
	int total, nota1, nota2, notas1, notas2;
	scanf("%i", &total); //total a ser sacado
	scanf("%i %i", &nota1, &nota2); //ler os dois tipos de nota
	
	//divisão de inteiro por inteiro resulta apenas a parte inteira da divisão
	//eu garanti com o casting (int) que converte um valor para inteiro
	notas1 = (int)total / nota1; 
	total = total - (notas1 * nota1); //desconta o que já foi dado em notas do primeiro tipo
	notas2 = (int)total / nota2; //faz o mesmo para a outra nota
	
	printf("Notas de %i: %i \n", nota1, notas1);
	printf("Notas de %i: %i", nota2, notas2);
	
	return 0;
}

Teste o código: http://ideone.com/a3WZWh

Share

Deixe um comentário

O seu endereço de e-mail não será publicado.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.