1544 - Muzical
Cerința
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
do1cu numărul0 - Nota
recu numărul1 - Nota
micu numărul2 - Nota
facu numărul3 - Nota
solcu numărul4 - Nota
lacu numărul5 - Nota
sicu numărul6 - Nota
do2cu 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
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
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
n ≤ 100.000
Exemplu 1
- Intrare
- 8
- do1 re mi fa sol la si do2
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- sol
Explicație
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
- Intrare
- 5000000
- do1 re mi fa sol la si do2
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<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>