3062 - Vas

De la Universitas 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

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

#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()

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ă.