📌 Despre Varianta 2 din 2020
Varianta 2 din 2020 acoperă operatorul %, recursivitatea, backtracking-ul, grafurile și arborii, structurile imbricate, matricele, șirurile de caractere și fișierele. Este o variantă completă, bună pentru exersat atenția la detalii.
Subiectul I (20p): 5 grile: valoarea minimă a unei expresii cu %, un subprogram recursiv care afișează la coborâre și la întoarcere, o problemă de backtracking cu meniuri de câte patru feluri de mâncare, componentele tare conexe ale unui graf orientat desenat și numărul maxim de fii ai unui nod într-un arbore cu 20 de noduri și 10 frunze.
Subiectul al II-lea (40p): Un algoritm în pseudocod care taie ultimele cifre ale fiecărui număr citit cât timp ele sunt mai mari decât cifra dinaintea lor, o structură figura pentru un cerc, cu un câmp centru care este tot o structură, și o secvență care completează o matrice cu + sub diagonala principală și cu litere de la a încolo pe diagonală și deasupra ei.
Subiectul al III-lea (30p): Un subprogram (multiplu) care returnează cel mai mic multiplu nenul al lui n care este pătrat perfect, o problemă cu șiruri de caractere în care literele din „citate”, adică dintre < și >, devin litere mari, și o problemă de eficiență cu „vârfurile” unui șir citit din fișierul bac.in.
⚠️ La ce să fii atent
- La I.1: Nu te opri la
x=1000! Pentru x=1999, x-999 este 1000, iar restul împărțirii la 1000 este 0, deci valoarea minimă este 0. - La I.2: Fii atent unde stă
cout<<x! Nu face parte din else, deci se execută la fiecare apel, după apelul recursiv. Zerourile apar la coborâre, iar numerele la întoarcere: 0071249. - La II.1.a: Un număr cu o singură cifră se reduce mereu la 0, pentru că cifra dinaintea lui este 0. De aceea 7 nu adaugă nimic la sumă, iar rezultatul este 2020.
- La II.1.b: Ca să se afișeze
niciunul, fiecare număr trebuie să se reducă la 0, adică să aibă cifrele în ordine strict crescătoare, de exemplu 1234 și 5678. - La III.3: Citește cu atenție regula de egalitate! În exemplu, vârfurile 10 și 11 au amândouă diferența dintre vecini 2, iar răspunsul este 11, cel mai mare dintre ele. Ține minte doar ultimele trei numere citite, fără să salvezi șirul într-un tablou.