1544 - Muzical
Cerința[edit | edit source]
Gigel în timp ce așteptă să meargă la doctor se joacă cu noul lui telefon. A observat ca atunci când este pe ecranul de start și apasă pe o tastă numerică se aude o notă muzicală.
Dar lui i-a venit ideea să codeze fiecare notă muzicală în acest mod:
- Nota
do1
cu numărul0
- Nota
re
cu numărul1
- Nota
mi
cu numărul2
- Nota
fa
cu numărul3
- Nota
sol
cu numărul4
- Nota
la
cu numărul5
- Nota
si
cu numărul6
- Nota
do2
cu numărul7
El creează un cântec, ia notele muzicale și le codează ca mai sus, le adună, iar apoi împarte suma la 8
și restul rămas este nota maximă.
Ajutați-l pe Gigel sa afle nota maximă!
Date de intrare[edit | edit source]
Fișierul de intrare muzical.in
conține pe prima linie numărul n
și pe a doua linie n
note muzicale.
Date de ieșire[edit | edit source]
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
Pe următoarea linie se va afișa nota maximă.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
n ≤ 100.000
Exemplu 1[edit | edit source]
- Intrare
- 8
- do1 re mi fa sol la si do2
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- sol
Explicație[edit | edit source]
do1
se codifică prin 0
re
se codifică prin 1
mi
se codifică prin 2
fa
se codifică prin 3
sol
se codifică prin 4
la
se codifică prin 5
si
se codifică prin 6
do2
se codifică prin 7
Adunând codificările notelor se obține suma 28
, iar restul sumei la împărțirea prin 8
este 4
, deci nota maximă este sol
.
Exemplu 2[edit | edit source]
- Intrare
- 5000000
- do1 re mi fa sol la si do2
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 1544 - Muzical
def conditii(n, note_muzicale):
return n <= 100_000 and \ all(nota in ("do1", "re", "mi", "fa", "sol", "la", "si", "do2") for nota in note_muzicale)
def muzical(note_muzicale):
# Inițializăm un dicționar cu notele muzicale și codificările lor note_dictionar = { "do1": 0, "re": 1, "mi": 2, "fa": 3, "sol": 4, "la": 5, "si": 6, "do2": 7 } # Însumăm codificările notelor muzicale suma_note = sum(note_dictionar[nota] for nota in note_muzicale) rest = suma_note % 8 # Preluăm din dicționar nota muzicală corespunzătoare restului obținut print(note_muzicale[rest])
if __name__ == "__main__":
n = int(input()) note_muzicale = [nota for nota in input().split()]
if not conditii(n, note_muzicale): print("Datele de intrare nu corespund restricțiilor impuse.") else: print("Datele de intrare corespund restricțiilor impuse.") muzical(note_muzicale)
</syntaxhighlight>