3181 - Marte3: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: def marte(): print("Anul martian dureaza x zile martiene") x = int(input()) 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) n = n - a * x * y #aflam numarul de ore ramase z = n // y #aflam numarul de zile h = n - z * y print(a, "Ani"...
 
Adrian (talk | contribs)
No edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
def marte():
== Cerința ==
Pe planeta Marte anul marțian durează <code>x</code> zile marțiene, iar o zi marțiană durează <code>y</code> ore. În fiecare oră, marțianului Iggle îi crește o antenă. După cât timp va avea Iggle <code>n</code> antene?


    print("Anul martian dureaza x zile martiene")
== Date de intrare ==
Programul citește de la tastatură numerele naturale <code>x y n</code>.


    x = int(input())
== Date de ieșire ==
Programul va afișa pe ecran trei numere naturale: <code>a</code>, <code>z</code>, <code>h</code>, pe rânduri diferite, reprezentând numărul de ani, zile și ore după care Iggle va avea <code>n</code> antene.


    print("O zi martiana dureaza y ore ")
== Restricții și precizări ==


    y = int(input())
* <code>1 ≤ x , y ≤ 1.000</code>
* <code>1 ≤ n ≤ 1.000.000.000</code>


    print("Numarul de antene al lui Iggle ")
== Exemplu: ==
Intrare
5 3 100
Ieșire
6
3
1


    n = int(input())
== Explicație ==
Anul marțian are <code>5</code> zile, iar ziua marțiană are <code>3</code> ore. Astfel, un an marțian va avea <code>5*3 = 15</code> ore. Atunci <code>100</code> de ore marțiene înseamnă 6 ani și încă <code>10</code> ore. Cele <code>10</code> ore înseamnă 3 zile și 1 oră.


    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)
== Rezolvare ==
<syntaxhighlight lang="python">
# 3181 - Marte3
def validare(nr_x, nr_y, nr_n):
    # Daca datele sunt invalide v-om face raise la eroarea ValueError


    n = n - a * x * y  #aflam numarul de ore ramase
    conditii = (
        nr_x >= 1, nr_y >= 1, nr_n >= 1,
        nr_x <= 1000, nr_y <= 1000, nr_n <= 1000000000
    )


    z = n // y      #aflam numarul de zile
    if not all(conditii):
        raise ValueError


    h = n - z * y


    print(a, "Ani", z, "Zile", h, "Ore");
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}")


print(marte());
 
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>

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>