3181 - Marte3: Difference between revisions
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"... |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
== 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? | |||
== Date de intrare == | |||
Programul citește de la tastatură numerele naturale <code>x y n</code>. | |||
== 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. | |||
== Restricții și precizări == | |||
* <code>1 ≤ x , y ≤ 1.000</code> | |||
* <code>1 ≤ n ≤ 1.000.000.000</code> | |||
== Exemplu: == | |||
Intrare | |||
5 3 100 | |||
Ieșire | |||
6 | |||
3 | |||
1 | |||
== 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ă. | |||
== 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 | |||
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> |
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">
- 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>