1936 - Catalin si codul secret

From Bitnami MediaWiki
Revision as of 20:04, 18 December 2023 by Aurelia Raluca (talk | contribs) (Pagină nouă: == Cerința == În banca lui Cătălin există un seif special unde Moș Crăciun își ține ascunse cadourile pentru copiii cei cuminți. Fiind vorba de o persoană așa de importantă, codul seifului nu este unul ușor. Moșului îi este dat un cartonaș cu n numere pe care le parcurge, în ordine, de la al doilea la penultimul, şi verifică pentru fiecare număr dacă cei 2 vecini sunt ori divizori ori multipli ai acestuia. Dacă da, va șterge primul triplet care respe...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

În banca lui Cătălin există un seif special unde Moș Crăciun își ține ascunse cadourile pentru copiii cei cuminți. Fiind vorba de o persoană așa de importantă, codul seifului nu este unul ușor. Moșului îi este dat un cartonaș cu n numere pe care le parcurge, în ordine, de la al doilea la penultimul, şi verifică pentru fiecare număr dacă cei 2 vecini sunt ori divizori ori multipli ai acestuia. Dacă da, va șterge primul triplet care respectă această regulă (numărul şi vecinii săi), formându-se un nou cod pentru care se reia de la început aplicarea regulii, până când nu mai există pe cartonaș niciun număr care să respecte proprietatea de eliminat.

La final se vor obține valorile corecte ale codului, care vor fi introduse în ordinea apariției lor sau, în cazul în care s-au șters toate numerele de pe cartonaș, atunci codul va fi mesajul preferat folosit de Moș Crăciun: Merry Christmas.

Date fiind cele n numere de pe cartonaş, Moșul vă roagă să aflați codul de care are nevoie pentru a putea deschide seiful în seara de ajun.

Date de intrare

Fișierul de intrare codsecret.in conține pe prima linie numărul natural n, iar pe a doua linie se găsesc n numere naturale x[1] x[2] ... x[n], separate prin câte un spațiu, reprezentând numerele aflate pe cartonaș.

Date de ieșire

Fișierul de ieșire codsecret.out va conține pe prima linie codul pe care Moș Crăciun îl va folosi pentru a deschide seiful.

Restricții și precizări

  • 1 ≤ n ≤ 100.000
  • 0 < x[i] ≤ 10.000.000

Exemplul 1

intrare
9
2 12 6 3 10 2 4 8 3
iesire
Datele introduse corespund restrictiilor impuse.
3 8 3

Exemplul 2

intrare
1
9 2 5 16 8 4 7 8 2
iesire
Datele de intrare nu corespund restrictiilor impuse.

Rezolvare

<syntaxhighlight lang="python3" line="1"

  1. 1936 - Catalin si codul secret

def obtine_cod(cartonas):

   while True:
       gasit = False
       for i in range(1, len(cartonas) - 1):
           if (cartonas[i - 1] % cartonas[i] == 0 or cartonas[i] % cartonas[i - 1] == 0) and (
               cartonas[i + 1] % cartonas[i] == 0 or cartonas[i] % cartonas[i + 1] == 0
           ):
               del cartonas[i - 1:i + 2]
               gasit = True
               break
       if not gasit:
           break
   if not cartonas:
       return "Merry Christmas"
   else:
       return cartonas

print(rezultat) </syntaxhighlight>