3181 - Marte3: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Fără descriere a modificării
 
Linia 26: Linia 26:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def marte():
# 3181 - Marte3
     print("Anul martian dureaza x zile martiene")
def validare(nr_x, nr_y, nr_n):
    x = int(input())
     # Daca datele sunt invalide v-om face raise la eroarea ValueError
    print("O zi martiana dureaza y ore ")
    y = int(input())
    print("Numarul de antene al lui Iggle ")
    n = int(input())


     a = n // (x * y)  # un an martian are x zile, o zi are y ore, deci un an va avea x*y ore, astfel a=n//(x*y)
     conditii = (
    n = n - a * x * y  #aflam numarul de ore ramase
        nr_x >= 1, nr_y >= 1, nr_n >= 1,
    z = n // y      #aflam numarul de zile
        nr_x <= 1000, nr_y <= 1000, nr_n <= 1000000000
    h = n - z * y
     )
     print(a, "Ani", z, "Zile", h, "Ore");


    if not all(conditii):
        raise ValueError
def marte3(nr_x, nr_y, nr_n):
    # un an martian are x zile, o zi are y ore,
    # deci un an va avea x*y ore, astfel a=nr_n//(nr_x * nr_y)
    a = nr_n // (nr_x * nr_y)
    # aflam numarul de ore ramase
    nr_n = nr_n - a * nr_x * nr_y
    # aflam numarul de zile
    z = nr_n // nr_y
    h = nr_n - z * nr_y
    print(f"{a}\n{z}\n{h}")
if __name__ == '__main__':
    # Citim de la tastatura numerele cerute
    nr_x = int(input())
    nr_y = int(input())
    nr_n = int(input())
    # Verificam daca datele introduse sunt valide
    # daca nu afisam mesajul corespunsador
    try:
        validare(nr_x, nr_y, nr_n)
    except ValueError:
        print("Nu au fost respectate cerintele impuse")
    else:
        print("Datele de intrare corespund restricțiilor impuse")
        marte3(nr_x, nr_y, nr_n)


print(marte());
</syntaxhighlight>
</syntaxhighlight>

Versiunea curentă din 22 mai 2023 11:16

Cerința

Pe planeta Marte anul marțian durează x zile marțiene, iar o zi marțiană durează y ore. În fiecare oră, marțianului Iggle îi crește o antenă. După cât timp va avea Iggle n antene?

Date de intrare

Programul citește de la tastatură numerele naturale x y n.

Date de ieșire

Programul va afișa pe ecran trei numere naturale: a, z, h, pe rânduri diferite, reprezentând numărul de ani, zile și ore după care Iggle va avea n antene.

Restricții și precizări

  • 1 ≤ x , y ≤ 1.000
  • 1 ≤ n ≤ 1.000.000.000

Exemplu:

Intrare

5 3 100

Ieșire

6
3
1

Explicație

Anul marțian are 5 zile, iar ziua marțiană are 3 ore. Astfel, un an marțian va avea 5*3 = 15 ore. Atunci 100 de ore marțiene înseamnă 6 ani și încă 10 ore. Cele 10 ore înseamnă 3 zile și 1 oră.

Rezolvare

# 3181 - Marte3
def validare(nr_x, nr_y, nr_n):
    # Daca datele sunt invalide v-om face raise la eroarea ValueError

    conditii = (
        nr_x >= 1, nr_y >= 1, nr_n >= 1,
        nr_x <= 1000, nr_y <= 1000, nr_n <= 1000000000
    )

    if not all(conditii):
        raise ValueError


def marte3(nr_x, nr_y, nr_n):
    # un an martian are x zile, o zi are y ore,
    # deci un an va avea x*y ore, astfel a=nr_n//(nr_x * nr_y)
    a = nr_n // (nr_x * nr_y)
    # aflam numarul de ore ramase
    nr_n = nr_n - a * nr_x * nr_y
    # aflam numarul de zile
    z = nr_n // nr_y
    h = nr_n - z * nr_y
    print(f"{a}\n{z}\n{h}")


if __name__ == '__main__':
    # Citim de la tastatura numerele cerute
    nr_x = int(input())
    nr_y = int(input())
    nr_n = int(input())

    # Verificam daca datele introduse sunt valide
    # daca nu afisam mesajul corespunsador
    try:
        validare(nr_x, nr_y, nr_n)
    except ValueError:
        print("Nu au fost respectate cerintele impuse")
    else:
        print("Datele de intrare corespund restricțiilor impuse")

        marte3(nr_x, nr_y, nr_n)