1544 - Muzical

From Bitnami MediaWiki
Revision as of 10:35, 7 May 2023 by Ardelean Alexandru (talk | contribs) (Pagină nouă: ==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 <code>do1</code> cu numărul <code>0</code> * Nota <code>re</code> cu numărul <code>1</code> * Nota <code>mi</code> cu numărul <code>2</code> * Nota <code>fa</code> cu numărul <code>3</cod...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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ă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[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">

  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>