3181 - Marte3: Difference between revisions
No edit summary |
No edit summary |
||
Line 26: | Line 26: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def | # 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> | </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>