3062 - Vas

From Bitnami MediaWiki

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

Intrare
100 15 20
Ieșire
90


Rezolvare

<syntaxhighlight lang="python" line>

  1. 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("Input invalid pentru x, t sau y. Valoare invalida.")
   else:
       T = cantitatea_de_apa_ramasa(x, t, y)
       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ă.