Bacalaureat 2027 la informatică: modelul oficial, mate-info
Subiectul oficial din 2027, cu baremul, pe 90 de puncte. Grilele și răspunsurile scurte le verifici pe loc; restul le scrii aici sau pe caiet, apoi te verifici pe barem.
Arată cum va arăta subiectul de la Bac.
Pe timp, ca la examen
Ceasul merge și dacă închizi pagina. Poți lua o singură pauză. La final, nota estimată după barem.
Subiectul ISubiectul al II-leaSubiectul al III-lea
Subiectul I 20 p
I.14 p
Indicați expresia C/C++ a cărei valoare este 0.
Vezi rezolvarea
Răspuns: a)
![Declarația: struct pantof { int marime; float pret; } p[100];](/f/b/fig-I-2.9d8969ee88.webp)
I.24 p
Variabila p, declarată alăturat, memorează mărimea și prețul pentru fiecare dintre cele 100 de perechi de pantofi dintr-un magazin. Indicați expresia C/C++ prin care se accesează prețul celei de a treia perechi.
Vezi rezolvarea
Răspuns: d)

I.34 p
Subprogramul f este definit alăturat. Indicați valoarea f(97,0).
Vezi rezolvarea
Răspuns: c)
I.44 p
Utilizând metoda backtracking se generează toate seturile de echipamente pentru drumeție din mulțimea ordonată astfel: {rucsac (100 de lei), bocanci (200 de lei), lanternă (50 de lei), bidon (20 de lei), pelerină (100 de lei), busolă (50 de lei), hartă (30 de lei)}. Într-un set, echipamentele sunt distincte și costă, în total, 200 de lei. Două soluții diferă prin cel puțin un echipament. Primele trei soluții generate sunt, în această ordine: (rucsac, lanternă, bidon, hartă), (rucsac, lanternă, busolă), (rucsac, bidon, busolă, hartă). Indicați a șasea soluție.
Vezi rezolvarea
Răspuns: d) (lanternă, bidon, pelerină, hartă)
I.54 p
Într-un arbore cu rădăcină considerăm că un nod se află pe nivelul x, dacă lanțul elementar care are o extremitate în nodul respectiv și cealaltă extremitate în rădăcina arborelui are lungimea x. Pe nivelul 0 se află un singur nod (rădăcina). Un arbore cu rădăcină are cinci niveluri. Nodurile de pe nivelul 2 au câte patru descendenți direcți („fii”), toate nodurile de pe același nivel au același număr de descendenți direcți și oricare două noduri aflate pe niveluri diferite au număr diferit de descendenți direcți. Indicați numărul de noduri de pe ultimul nivel, astfel încât numărul total de noduri ale arborelui să fie minim.
Vezi rezolvarea
Răspuns: b)
Subiectul al II-lea 40 p
Algoritmul de la II.1
Algoritmul alăturat este reprezentat în pseudocod. S-a notat cu a%b restul împărțirii numărului natural a la numărul natural nenul b și cu [c] partea întreagă a numărului real c.
![Algoritmul în pseudocod: citește x,y; n←1; cât timp x>0: ok←1; cât timp ok=1: dacă x%2=0 atunci y←y*y; x←[x/2], altfel x←x-1; ok←0; apoi n←n*y; la final scrie n.](/f/b/fig-II-1.413842724c.webp)
II.1.a6 p
a. Scrieți valoarea afișată în urma executării algoritmului dacă se citesc, în această ordine, numerele 11, 2.
Vezi rezolvarea
Răspuns: 2048
II.1.b6 p
b. Dacă primul număr citit este 3, scrieți două numere din intervalul [1,10] care pot fi citite pentru variabila y astfel încât, în urma executării algoritmului, pentru fiecare dintre acestea, numărul afișat să fie din intervalul [27,127].
Verifică-te pe barem
Un exemplu de răspuns
Oricare două dintre 3, 4, 5 (de exemplu 3 și 4).
Exemplu scris de Zece, nu singurul răspuns bun.
II.1.c10 p
c. Scrieți programul C/C++ corespunzător algoritmului dat.
Verifică-te pe barem
Un exemplu de răspuns
#include <iostream>
using namespace std;
int main()
{
int x, y, n = 1, ok;
cin >> x >> y;
while (x > 0)
{
ok = 1;
while (ok == 1)
if (x % 2 == 0) { y = y * y; x = x / 2; }
else { x = x - 1; ok = 0; }
n = n * y;
}
cout << n;
return 0;
}Exemplu scris de Zece, nu singurul răspuns bun.
II.1.d6 p
d. Scrieți în pseudocod un algoritm echivalent cu cel dat, înlocuind adecvat prima structură cât timp...execută cu o structură repetitivă cu test final.
Verifică-te pe barem
Un exemplu de răspuns
citește x,y (numere naturale)
n←1
dacă x>0 atunci
repetă
ok←1
cât timp ok=1 execută
dacă x%2=0 atunci y←y*y; x←[x/2]
altfel x←x-1; ok←0
■
■
n←n*y
până când x=0
■
scrie n
Exemplu scris de Zece, nu singurul răspuns bun.
II.26 p
Un graf orientat are 5 vârfuri, numerotate de la 1 la 5 și arcele (4,5), (2,1), (3,1), (1,4), (1,2), (5,3). Scrieți un drum cu lungimea minimum 3 și un circuit care nu este elementar.
Verifică-te pe barem
Un exemplu de răspuns
Drum: 2, 1, 4, 5. Circuit neelementar: 1, 2, 1, 4, 5, 3, 1.
Exemplu scris de Zece, nu singurul răspuns bun.

II.36 p
Variabilele i și j sunt de tip întreg, iar variabila a memorează un tablou bidimensional cu 8 linii și 8 coloane, numerotate de la 0, având inițial toate elementele egale cu -1. Scrieți secvența de instrucțiuni C/C++ de mai jos, înlocuind punctele de suspensie cu instrucțiuni adecvate, dintre care cel mult trei de atribuire, astfel încât, în urma executării secvenței obținute, variabila a să memoreze tabloul alăturat.
for(i=0;i<8;i++)
for(j=0;j<8;j++)
. . . . . . . . . . . . . . . .
Verifică-te pe barem
Un exemplu de răspuns
for(i=0;i<8;i++)
for(j=0;j<8;j++)
if(j==2 || j==3) a[i][j]=0;
else if(j<6) a[i][j]=2;
else a[i][j]=7;Exemplu scris de Zece, nu singurul răspuns bun.
Subiectul al III-lea 30 p
III.110 p
Un grădinar are un teren dreptunghiular pe care îl împarte în parcele pătrate, toate de latură egală, număr natural. Subprogramul parcele are doi parametri, x și y, prin care primește câte un număr natural din intervalul [1,10⁴], reprezentând lățimea, respectiv lungimea terenului, măsurate în metri. Subprogramul afișează pe ecran, pentru fiecare variantă de împărțire a terenului, o pereche formată din numărul de parcele obținute și latura unei astfel de parcele, în această ordine. Valorile din pereche sunt separate prin expresia cu latura, iar fiecare pereche este urmată de simbolul punct și virgulă (;), ca în exemplu.
Scrieți definiția completă a subprogramului C/C++.
Exemplu: pentru x=18 și y=24, se afișează pe ecran, cu perechile nu neapărat în această ordine:
432 cu latura 1;108 cu latura 2;48 cu latura 3;12 cu latura 6;
Verifică-te pe barem
Un exemplu de răspuns
void parcele(int x, int y)
{
for (int d = 1; d <= x && d <= y; d++)
if (x % d == 0 && y % d == 0)
cout << (x / d) * (y / d) << " cu latura " << d << ";";
}Exemplu scris de Zece, nu singurul răspuns bun.
III.210 p
Într-un text de cel mult 200 de caractere, cuvintele sunt separate prin câte un spațiu și sunt formate din litere mici ale alfabetului englez, cifre și simboluri din mulțimea parantezelor: (, ), [, ], {, }.
Scrieți un program C/C++ care citește de la tastatură un text de tipul precizat și afișează pe ecran numărul cuvintelor care conțin atât paranteze, cât și litere, în număr egal.
Exemplu: pentru textul a(b5) xyz [x1]y2 (x) {a6bc} 27 pq {ba}a) se afișează pe ecran 3
Verifică-te pe barem
Un exemplu de răspuns
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[201], *p;
int nr = 0;
cin.getline(s, 201);
p = strtok(s, " ");
while (p != NULL)
{
int lit = 0, par = 0;
for (int i = 0; p[i] != 0; i++)
if (p[i] >= 'a' && p[i] <= 'z') lit++;
else if (strchr("()[]{}", p[i]) != NULL) par++;
if (lit > 0 && lit == par) nr++;
p = strtok(NULL, " ");
}
cout << nr;
return 0;
}Exemplu scris de Zece, nu singurul răspuns bun.
Concursul de la III.3
La un concurs, fiecare echipă are câte un indicativ, număr natural din intervalul [10,99]; indicativele sunt acordate la rând, în ordinea înscrierii. Fiecare echipă are de rezolvat câte trei probleme și fiecare problemă este evaluată cel mult o dată și notată cu un punctaj, număr natural din intervalul [0,99]. Rezultatul pentru fiecare problemă trimisă spre evaluare este înregistrat sub forma unui număr natural, format prin concatenarea, în această ordine, a numărului problemei (1, 2 sau 3), a punctajului obținut și a indicativului echipei. Problemele pentru care nu se trimit rezolvări spre evaluare sunt notate implicit cu câte 0 puncte. Clasamentul se face în funcție de punctajul total obținut, în ordine descrescătoare, la punctaj egal departajarea fiind în funcție de numărul de probleme cu punctaj 99, iar în caz de egalitate în funcție de ordinea înscrierii.
Fișierul bac.txt conține cel mult 10⁶ numere naturale din intervalul [10³,10⁵), reprezentând rezultatele obținute la problemele evaluate. Numerele sunt separate prin câte un spațiu.
Se cere să se afișeze pe ecran indicativul primei echipe din clasament. Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul are conținutul alăturat, pe ecran se afișează 12 (primele cinci echipe din clasament sunt, în această ordine, 12, 15, 11, 10, 30, primele trei obținând câte 259 de puncte, primele două cu câte o problemă de punctaj 99 și prima echipă fiind înscrisă înaintea celei de-a doua).

III.3.a2 p
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.
Verifică-te pe barem
Un exemplu de răspuns
Folosesc doi vectori de frecvență indexați după indicativ (10..99): p[i] = punctajul total al echipei i și nr[i] = câte probleme de 99 are. Citesc numerele din fișier unul câte unul: indicativul e x%100, punctajul e (x/100)%100 dacă x/100>99, altfel (x/100)%10; îl adun la p[i] și, dacă e 99, cresc nr[i]. La final parcurg indicativele crescător și rețin echipa cu p mai mare sau, la egalitate, cu nr mai mare; la egalitate totală rămâne cea cu indicativ mai mic, adică înscrisă mai devreme.
Eficiență: fiecare număr din fișier e citit o singură dată și prelucrat în timp constant, fără a memora șirul; parcurgerea finală are doar 90 de pași. Algoritmul e liniar în numărul de valori din fișier.
Exemplu scris de Zece, nu singurul răspuns bun.
III.3.b8 p
b. Scrieți programul C/C++ corespunzător algoritmului proiectat.
Verifică-te pe barem
Un exemplu de răspuns
#include <fstream>
#include <iostream>
using namespace std;
int p[100], nr[100];
int main()
{
ifstream f("bac.txt");
int x, i, pct, em = 10;
while (f >> x)
{
i = x % 100;
if (x / 100 > 99) pct = (x / 100) % 100;
else pct = (x / 100) % 10;
p[i] += pct;
if (pct == 99) nr[i]++;
}
for (i = 11; i < 100; i++)
if (p[i] > p[em] || (p[i] == p[em] && nr[i] > nr[em])) em = i;
cout << em;
return 0;
}Exemplu scris de Zece, nu singurul răspuns bun.
Vrei să-ți scriem când apare ceva nou pentru Bacalaureat?
Îți scriem când punem subiecte oficiale noi explicate, în ziua examenului cu grila și rezultatele și, rar, când avem nevoie de ajutorul tău. Cel mult 2 emailuri pe lună, plus zilele de examen. Doar despre Bacalaureat.
Gata! Ți-am trimis un email de confirmare. Dacă nu-l vezi, uită-te și în Promoții sau Spam.