3181 - Marte3

From Bitnami MediaWiki
Revision as of 11:16, 22 May 2023 by Adrian (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit]

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[edit]

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

Date de ieșire[edit]

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[edit]

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

Exemplu:[edit]

Intrare

5 3 100

Ieșire

6
3
1

Explicație[edit]

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[edit]

<syntaxhighlight lang="python">

  1. 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)

</syntaxhighlight>