3181 - Marte3

De la Universitas MediaWiki

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)