📌 Despre Varianta 7 din 2021
Varianta 7 din 2021 trece prin expresii cu / și %, backtracking, structuri, arbori și grafuri, recursivitate, șiruri de caractere, matrice și fișiere. Este o variantă echilibrată, bună pentru exersat atenția la detalii.
Subiectul I (20p): 5 grile: o expresie care are valoarea 1 dacă 2021 îl divide pe x, o problemă de backtracking cu numere formate din cifrele lui 2021, o atribuire corectă între structuri masina, numărul de fii ai unui nod într-un arbore dat prin vectorul de „tați” și numărul de noduri ale unui graf complet cu 210 muchii.
Subiectul al II-lea (40p): Un algoritm în pseudocod cu o interschimbare care afișează câte o steluță pentru fiecare număr impar dintr-un interval, un subprogram recursiv f calculat pentru 2 și 21 și o secvență cu șiruri de caractere care afișează x+3 și apoi literele din bac2021.
Subiectul al III-lea (30p): Un subprogram cu cifre (imog, care verifică dacă două numere sunt „impar-oglindite”), o problemă cu matrice în care se interschimbă o parte de linie cu o parte de coloană și o problemă de eficiență care scrie invers termenii unui șir în fișierul bac.out.
⚠️ La ce să fii atent
- La I.1: În variantele b) și d),
x%2021 este exact 0 când 2021 îl divide pe x, deci s-ar face o împărțire la zero. Varianta corectă este x%(x/2021)==0. - La I.2: Numerele trebuie să fie strict mai mici decât 2021, deci după
2020 nu se generează 2021. Algoritmul se întoarce la a doua cifră, iar următorul număr este 21. - La II.1.b: Nu uita interschimbarea de la început! Pentru
n=79, merge și un m mai mare decât n: 157 și 158 devin capătul de sus al intervalului și dau tot 40 de steluțe, ca și m=1. - La II.3:
x+3 înseamnă șirul care începe de la al patrulea caracter, deci prima linie afișată este 2021. Apoi strchr returnează 0 pentru caracterele care nu sunt cifre, deci se afișează b!a!c!. - La III.3: Diferența dintre doi termeni vecini îți dă poziția:
y-x este 2·n, unde n este poziția lui y. Pornind de la y, scazi pe rând 2·n, 2·(n-1) și așa mai departe, scriind direct în fișier, fără să salvezi termenii.