deve consegnare esattamente N kilogrammi di zucchero a un negozio di caramelle sulla costa
dell'Adriatico. Mario può usare due tipi di pacchi: quelli che contengono 3 kg, e quelli che
contengono 5 kg di zucchero (non ci sono pacchi con misure intermedie, può usare solo pacchi
pieni da 3k o 5kg).
Mario vorrebbe usare il numero minore di pacchi possibile. Se per esempio deve consegnare 18kg
di zucchero, potrebbe usare 6 pacchi da 3kg. Ma sarebbe meglio utillizare tre pacchi da 5kg e 1
pacco da 3kg, per un totale di 4 pacchi.
Aiutate Mario a trovare il numero minore di pacchi necessari per trasportare esattamente N
kilogrammi di zucchero
INPUT (input.txt)
La prima e unica riga dell'input contiene un intero N (3 <= N <= 5000).
OUTPUT (output.txt)
L'output deve consistere di un unico numero, il numero minore di pacchi che Mario deve usare. Se è
impossibile trasportare esattamente N kilogrammi, stampare in output -1.
input.txt input.txt input.txt
4 9 18
output.txt output.txt output.txt
-1 3 4
Sfruttiamo al massimo i pacchi da 5, poi, se non bastano, usiamo quelli da tre:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> #include <cstdlib> #include <fstream> using namespace std; int main(){ ifstream in ("input.txt"); ofstream out ("output.txt"); int k,d5,d3,s3; in>>k; d5= k/5; d3= k-d5*5; s3=d3/3; while (d3%3 != 0 && d5-1 >-1){ d3= k-(--d5)*5; s3=d3/3;} if (d3%3 ==0 ) out<< d5+s3; else out<< -1; return 0;} |
Nessun commento:
Posta un commento
Si prega di non commentare in modo volgare e/o offensivo.