📌 Despre Varianta 1 din 2021
Varianta 1 din 2021 trece prin expresii logice, recursivitate, matrice, grafuri și arbori, backtracking, structuri, descompunerea în factori primi, șiruri de caractere și fișiere. Este o variantă echilibrată, bună ca test complet.
Subiectul I (20p): 5 grile: o expresie care verifică dacă două numere sunt pare, un subprogram recursiv care șterge dintr-un număr cifrele egale cu c, accesul la un element de pe diagonala secundară a unei matrice, un ciclu elementar într-un graf neorientat și numărul minim de noduri de pe nivelul 3 al unui arbore cu rădăcină.
Subiectul al II-lea (40p): Un algoritm în pseudocod cu o interschimbare și un pentru descrescător care afișează cifrele 1 și 2, o problemă de backtracking cu grupuri de păsări cântătoare și o secvență care scade o fracție memorată într-o structură fractie din fracția 2020/2021.
Subiectul al III-lea (30p): Un subprogram cu factori primi (divPrim, suma divizorilor primi care apar la o putere impară), o problemă cu șiruri de caractere care afișează primele k cuvinte terminate cu vocală și o problemă de eficiență care caută ultimii doi termeni vecini care au ca sufix numărul x, citiți din fișierul bac.txt.
⚠️ La ce să fii atent
- La I.1: Variantele c) și d) verifică doar că
x și y au aceeași paritate, deci sunt adevărate și pentru două numere impare, de exemplu x=3, y=5. - La I.5: Niciun nivel nu poate avea același număr de noduri ca altul, deci fiecare nod de pe nivelurile 0, 1 și 2 trebuie să aibă cel puțin 2 fii. Nivelurile au 1, 2, 4 și 8 noduri, deci minimul este 8.
- La II.1.a: Nu uita interschimbarea de la început! Pentru 8 și 5,
x devine 5 și y devine 8, deci bucla merge de la 8 la 5, iar rezultatul este 1111121121. - La II.1.b: Interschimbarea schimbă și numărul de pași, și pragul cu care se compară
nr. De aceea merge și o valoare mai mică decât 10: pentru y=6 și pentru y=15, cifra 2 se afișează de exact trei ori. - La III.3: Cum
x are trei cifre, un termen îl are pe x drept sufix dacă ultimele lui trei cifre sunt chiar x, adică restul împărțirii la 1000 este x. Se cer ultimii doi termeni vecini, deci păstrează mereu ultima pereche găsită.