3181 - Marte3: Difference between revisions

From Bitnami MediaWiki
No edit summary
Adrian (talk | contribs)
No edit summary
 
Line 26: Line 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>

Latest revision as of 11:16, 22 May 2023

Cerința[edit | edit source]

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

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

Date de ieșire[edit | edit source]

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

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

Exemplu:[edit | edit source]

Intrare

5 3 100

Ieșire

6
3
1

Explicație[edit | edit source]

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

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