3062 - Vas
Sursa: [1]
Cerinţa
Într-un vas sunt x litri de apă (x>0). După fiecare t minute, un sfert din cantitatea de apă se evaporă. Să se determine după câte minute vor rămâne în vas cel mult y litri de apă.
Date de intrare
Programul citește de la tastatură numerele naturale x, t și y.
Date de ieșire
Programul va afișa pe ecran un număr natural T, reprezentând după câte minute vor rămâne în vas cel mult y litri de apă.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează după câte minute vor rămâne în vas cel mult y litri de apă.
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."
Restricţii şi precizări
1 ≤ x,t,y ≤ 1.000.000.000
Exemplul 1
- Datele de intrare
- Introduceti cantitatea initiala de apa (in litri): 100
- Introduceti intervalul de timp (in minute): 15
- Introduceti cantitatea minima de apa ramasa in vas (in litri): 20
- Datele de ieșire
- Datele sunt introduse corect.
- Dupa 90 minute vor ramane in vas cel mult 20 litri de apa.
Rezolvare
<syntaxhighlight lang="python" line>
- 3062
def cantitatea_de_apa_ramasa(x, t, y):
T = 0 while x > y: x -= x/4 # cantitatea evaporata T += t # timpul trecut return T
def validare_input(x, t, y):
if not (1 <= x <= 1000000000 and 1 <= t <= 1000000000 and 1 <= y <= 1000000000): return False return True
def main():
x = int(input("Introduceti cantitatea initiala de apa (in litri): ")) t = int(input("Introduceti intervalul de timp (in minute): ")) y = int(input("Introduceti cantitatea minima de apa ramasa in vas (in litri): "))
if not validare_input(x, t, y): print("Datele nu corespund restricțiilor impuse.") else: T = cantitatea_de_apa_ramasa(x, t, y) print("Datele sunt introduse corect.") print("Dupa", T, "minute vor ramane in vas cel mult", y, "litri de apa.")
if __name__ == '__main__':
main()
</syntaxhighlight>
Explicatie cod:
Această implementare Python definește o funcție numită cantitatea_de_apa_ramasa care primește trei parametri: x, t și y. Parametrul x reprezintă cantitatea inițială de apă din vas (în litri), t reprezintă intervalul de timp (în minute) și y reprezintă cantitatea minimă de apă care trebuie să rămână în vas (în litri).
Funcția cantitatea_de_apa_ramasa calculează timpul necesar până când cantitatea de apă din vas scade sub cantitatea minimă (y) și returnează acest timp exprimat în minute.
De asemenea, există o funcție suplimentară numită validare_input care primește aceiași parametri ca și cantitatea_de_apa_ramasa și validează dacă valorile lor se încadrează în intervalul permis (1 <= x, t, y <= 1.000.000.000). În cazul în care valorile nu sunt valide, funcția returnează False, altfel returnează True.
Funcția principală main citește valorile pentru x, t și y de la utilizator prin intermediul funcției input, validează valorile prin apelul funcției validare_input și afișează timpul necesar pentru ca cantitatea de apă din vas să scadă sub cantitatea minimă.