1544 - Muzical

De la Universitas MediaWiki

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 do1 cu numărul 0
  • Nota re cu numărul 1
  • Nota mi cu numărul 2
  • Nota fa cu numărul 3
  • Nota sol cu numărul 4
  • Nota la cu numărul 5
  • Nota si cu numărul 6
  • Nota do2 cu numărul 7

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

# 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)