RoLLMHub/RoSchoolToUniQA huggingface dataset:
Indicați expresia C/C++ care are valoarea 1 dacă și numai dacă numerele memorate în variabilele întregi x și y sunt pare.
A. x%2==0 && (y+1)%2!=0
B. (x-y)%2==0
C. (x+y)%2==0
D. x%2==y%2
Răspuns corect: A
```c++
void f(int x, int y) {
  if (x<10) cout<<x;
  else {
    f(x/10,y+1);
    cout<<x%10;
  }
  cout<<y;
}
```
---
Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f (2020,0);
A. 23020
B. 2022100
C. 02023210
D. 23022100
Răspuns corect: D
Utilizând metoda backtracking se generează toate permutările elementelor mulțimii ordonate astfel: {1, 2, 3, 4, 5, 6}; pentru fiecare permutare, pe primele trei poziții sunt doar valori pare, iar pe ultimele trei poziții sunt doar valori impare. Primele șase permutări generate sunt, în această ordine: (2,4,6,1,3,5), (2,4,6,1,5,3), (2,4,6,3,1,5), (2,4,6,3,5,1), (2,4,6,5,1,3), (2,4,6,5,3,1). Indicați a șaptea permutare generată.
A. (4,2,6,1,5,3)
B. (4,2,6,1,3,5)
C. (2,6,4,1,3,5)
D. (2,4,6,5,3,2)
Răspuns corect: C
```c++
struct ciocolata {
  char tip;
  float pret;
}x[20];
```
---
Variabila x memorează, pentru fiecare dintre cele 20 de sortimente de ciocolată, următoarele date: tipul (litera s pentru ciocolată neagră și litera L pentru ciocolată cu lapte) și prețul produsului. Indicați o expresie a cărei valoare este egală cu tipul celui de al 11-lea sortiment de ciocolată.
A. x.ciocolata[10].tip
B. x.tip[10]
C. x[10].ciocolata.tip
D. x[10].tip
Răspuns corect: D
Într-un graf neorientat, cu 10 muchii, două noduri au gradul 0, șase noduri au grade impare, iar celelalte noduri au grade pare, nenule. Indicați numărul maxim de noduri ale grafului.
A. 17
B. 15
C. 12
D. 10
Răspuns corect: B
Variabilele x și y memorează câte un număr natural (x≤y). Indicați expresia C/C++ cu valoarea 1 dacă și numai dacă intervalul [x,y] NU conține niciun număr de două cifre.
A. !(x>=10 || y>99)
B. !(x<=99 && y>=10)
C. x>=10 || y<=99
D. x>99 && y<10
Răspuns corect: B
```c++
void f(int x,int y,int z) {
  if(z<x) {
    cout<<y;
    f(x,y+2,z+1);
  }
}
```
---
Subprogramul f este definit alăturat. Indicați un apel în urma căruia se afișează pe ecran secvența: 13579
A. f(5,0,0);
B. f(5,1,1);
C. f(6,1,6);
D. f(6,1,1);
Răspuns corect: D
Variabilele s, x și y permit memorarea câte unui șir de cel mult 15 caractere. Indicați șirul accesat prin variabila s în urma executării secvenței alăturate. strcpy(x,"soare"); strcpy(y,"ploaie"); if (strcmp(x,y)>0) strcpy(s,x+1); else strcpy(s,y+2);
A. oare
B. oaie
C. ploaie
D. soare
Răspuns corect: A
Un arbore cu 14 noduri, numerotate de la 1 la 14, este reprezentat prin vectorul de "tați" (13,3,0,6,13,3,3,7,6,2,13,2,6,13). Indicați nodul care este rădăcina arborelui.
A. 1
B. 3
C. 7
D. 13
Răspuns corect: B
Indicați numărul maxim de vârfuri izolate pe care le poate avea un graf orientat cu 24 de vârfuri și 24 de arce poziționate adecvat.
A. 5
B. 6
C. 18
D. 21
Răspuns corect: C
Variabilele x și y sunt de tip real. Indicați o expresie C/C++ echivalentă !(x>25 || y<6) cu cea alăturată.
A. x<=25 && y>=6
B. x<=25 || y>=6
C. x<=25 && y<6
D. x<=25 || y<6
Răspuns corect: A
```c++
void f(int x) {
  if(x%5!=0) {
    x=x*5/2; f(x);
  }
  else {
    x=x-1;
    cout<<x;
  }
}
```
---
Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f(9);
A. 225554
B. 545522
C. 55109
D. 92255
Răspuns corect: B
Utilizând metoda backtracking, se generează, respectând ordinea enumerării elementelor din mulțimile precizate mai jos, toate numerele de mașină care cuprind câte trei elemente constitutive, separate prin cratimă: indicativul județului, din mulțimea {B, BR, HD, MM, SV, TL}; un număr, format din două cifre din mulțimea {2, 4, 6, 8}, în ordine strict crescătoare; trei litere mari distincte din mulțimea {A, B, C), cea din mijloc fiind A. Primele șapte numere generate sunt, în această ordine: B-24-BAC, B-24-CAB, B-26-BAC, B-26-CAB, B-28-BAC, B-28-CAB, B-46-BAC. Indicați două soluții, prima generată imediat înainte de soluția SV-68-CAB, iar a doua generată imediat după soluția SV-68-CAB.
A. MM-68-CAB, SV-86-BAC
B. SV-46-CAB, TL-24-BAC
C. SV-48-BAC, SV-68-BAC
D. SV-68-BAC, TL-24-BAC
Răspuns corect: D
```c++
struct data {
  int zi, luna,an;
};
struct telefon {
  char sistem;
  float pret;
  struct data achizitionare;
} t;
```
---
Variabila t, declarată alăturat, memorează, pentru un telefon, următoarele date: tipul sistemului de operare (litera a pentru Android și litera w pentru Windows), prețul produsului, precum și data achiziționării (ziua, luna și anul). Indicați o expresie C/C++ prin care se accesează anul achiziționării telefonului.
A. telefon.an
B. t.data.an
C. telefon.achizitionare.data.an
D. t.achizitionare.an
Răspuns corect: D
Oricare dintre cele 5 vârfuri ale unui graf orientat are proprietatea că suma dintre gradul său extern și gradul său intern este 4. Indicați lungimea maximă a unui drum elementar în acest graf.
A. 10
B. 8
C. 4
D. 3
Răspuns corect: C
Indicați expresia C/C++ care are cea mai mare valoare, comparativ cu celelalte trei expresii.
A. 20*23/(2*2)
B. 20/2*23/2
C. (20*23)/2
D. (20*23)/2*2
Răspuns corect: D
```c++
void f (int n) {
  if(n!=0) f(n/2);
  cout<<n%2;
}
```
---
Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f(23);
A. 100111
B. 111010
C. 010111
D. 01251123
Răspuns corect: C
```c++
strcpy(s,"bac2023");
s [s[2]-'a']='\0';
k=strlen(s);
```
---
Variabila k este de tip întreg, iar variabila s permite memorarea unui șir de maximum 50 de caractere. Indicați valoarea variabilei k în urma executării secvenței alăturate.
A. 7
B. 6
C. 2
D. 1
Răspuns corect: C
Indicați un vector de "tați" corespunzător unui arbore cu 7 noduri, în care cel puțin unul dintre noduri are trei ascendenți.
A. 0,1,2,1,1,1,2
B. 3,0,2,1,3,2,1
C. 4,3,0,3,4,4,3
D. 5,4,3,0,2,3,4
Răspuns corect: B
O companie de colectare a fructelor are 6 depozite, numerotate de la 1 la 6: depozitele 1, 3 și 5 conțin mere, depozitele 2 și 4 conțin pere, iar depozitul 6 conține piersici. Compania a construit 4 benzi de transport unidirecțional: de la depozitul 1 la depozitul 5, de la depozitul 5 la depozitul 2, de la depozitul 5 la depozitul 4 și de la depozitul 6 la depozitul 1. Dacă depozitele reprezintă vârfurile unui graf orientat, iar benzile de transport reprezintă arcele acestuia, indicați numărul minim de benzi de transport care pot fi adăugate, astfel încât graful obținut să aibă trei componente tare conexe, fiecare dintre acestea având vârfuri care corespund depozitelor cu același tip de fructe.
A. 4
B. 3
C. 2
D. 1
Răspuns corect: A
Indicați numerele pe care le pot memora variabilele întregi x și y, astfel încât valoarea expresiei C/C++ alăturate să fie 1. y%x-(x/y)*3!=0
A. x=25 și y=75
B. x=25 și y=15
C. x=15 și y=0
D. x=10 și y=30
Răspuns corect: B
```c++
int f(int x, int y) {
  int z;
  if (y==0) return 1;
  z=f(x,y/2);
  if (y%2!=0) return z*z*x;
  return z*z;
}
```
---
Subprogramul f este definit alăturat. Indicați valoarea f(3,2).
A. 1
B. 2
C. 9
D. 18
Răspuns corect: C
```c++
strcpy(s,"2019");
strcpy(s+3,"23");
```
---
Variabila s poate accesa un șir cu cel mult 20 de caractere. Indicați șirul accesat prin s în urma executării secvenței alăturate.
A. 20123
B. 201923
C. 202223
D. 2023
Răspuns corect: A
Utilizând metoda backtracking, se generează toate parfumurile formate prin amestecarea a câte 3 esențe distincte din mulțimea {bergamotă, cireș, iris, lămâie, salcâm}. Două parfumuri sunt distincte dacă diferă prin cel puțin o esență. Primele patru soluții obținute sunt, în această ordine: (bergamotă, cireș, iris), (bergamotă, cireș, lămâie), (bergamotă, cireș, salcâm) și (bergamotă, iris, lămâie). Indicați penultima soluție generată.
A. (cireș, iris, salcâm)
B. (cireș, lămâie, salcâm)
C. (lămâie, iris, salcâm)
D. (iris, lămâie, salcâm)
Răspuns corect: B
Un graf neorientat are 5 noduri, numerotate de la 1 la 5, cu gradele figurate în tabelul alăturat. Indicați o pereche de valori posibile pentru x și y.

Nod | 1 | 2 | 3 | 4 | 5
--- | --- | --- | --- | --- | ---
Grad | 2 | x | 3 | 3 | y
A. 0 și 4
B. 1 și 5
C. 2 și 3
D. 3 și 3
Răspuns corect: D
Variabilele întregi m și n memorează câte un număr natural. Indicați expresia C/C++ care are valoarea 1 dacă și numai dacă fiecare dintre numerele memorate în variabilele m și n este par.
A. (m+n)%2==0
B. (m-n)%2==0
C. m%2+n%2==0
D. m%2-n%2==0
Răspuns corect: C
```c++
int f(int n,int k) {
  if (n==0 || k==0) return 0;
  return n%k+10*f(n/k,k);
}
```
---
Subprogramul f este definit alăturat. Indicați valoarea f (35,3).
A. 1022
B. 355
C. 102
D. 33
Răspuns corect: A
```c++
struct paralelipiped {
  float lg,lt,h;
}p;
```
---
Variabila p, declarată alăturat, memorează dimensiunile unui paralelipiped dreptunghic: lungimea, lățimea, respectiv înălțimea. Volumul paralelipipedului este egal cu produsul celor trei dimensiuni ale sale. Indicați o instrucțiune prin care i se atribuie variabilei reale v valoarea volumului paralelipipedului corespunzător variabilei p.
A. v=1g*lt*h;
B. v=1g.p*lt.p*h.p;
C. v=p(1g*lt*h);
D. v=p.1g*p.lt*p.h;
Răspuns corect: D
Utilizând metoda bactracking se generează toate șirurile de 5 litere distincte din mulțimea {A, M, U, R, G}, astfel încât în fiecare șir litera R precede literele a și M. Primele cinci soluții generate sunt, în această ordine: URAMG, URAGM, URMAG, URMGA, URGAM. Indicați soluția generată imediat după GURMA.
A. GARUM
B. GRAMU
C. GRAUM
D. GRUAM
Răspuns corect: B
Într-o zonă sunt 23 de obiective turistice, numerotate de la 1 la 23; zona este reprezentată ca un graf orientat în care vârfurile corespund acestor obiective, iar arcele sunt stabilite în funcție de modalitatea de deplasare între două obiective, astfel: de la fiecare obiectiv numerotat cu i (ie [1, 23]) se poate merge direct doar la obiectivul numerotat cu 2*i, dacă acesta există, sau doar la obiectivul numerotat cu i-1, în caz contrar. Indicați numărul maxim de vârfuri ale unui drum elementar în acest graf, cu extremitatea inițială 1.
A. 5
B. 11
C. 16
D. 21
Răspuns corect: C
Indicați valoarea expresiei C/C++ alăturate. 22/20*20/2
A. 0
B. 0.55
C. 10
D. 55
Răspuns corect: C
```c++
struct produs {
  char denumire [50];
  float cantitate, pret;
}x;
float valoare;
```
---
Variabilele x și valoare sunt declarate alăturat. Indicați o instrucțiune de atribuire corectă din punctul de vedere sintactic.
A. x=("apa minerala",10,2.5);
B. x.produs.pret=2.5;
C. x.denumire [5] = "Borsec";
D. valoare=2*x.cantitate*x.pret;
Răspuns corect: D
La 0 sală de sport se organizează antrenamente pentru sporturi din mulțimea {tenis, fotbal, volei, handbal, baschet}, astfel încât o persoană poate opta pentru un pachet de antrenamente pentru două sau trei sporturi, dar nu poate alege fotbal și baschet în același pachet. Utilizând metoda backtracking se generează toate posibilitățile unei persoane de a opta pentru un pachet de antrenamente în cadrul sălii de sport. Două pachete sunt distincte dacă diferă prin cel puțin un sport ales. Primele cinci soluții generate sunt, în această ordine: {tenis, fotbal}, {tenis, fotbal, volei}, {tenis, fotbal, handbal}, {tenis, volei}, {tenis, volei, handbal}. Indicați soluția generată imediat după { fotbal, handbal}.
A. {volei, handbal}
B. {fotbal, handbal, baschet}
C. {handbal, baschet }
D. {volei, handbal, baschet}
Răspuns corect: A
Un graf neorientat cu 6 noduri, numerotate de la 1 la 6, are muchiile [1,2], [1,3], [2,3], [4,6]. Indicați numărul de componente conexe ale acestuia.
A. 1
B. 3
C. 5
D. 6
Răspuns corect: B
Într-un arbore cu rădăcină un nod se află pe nivelul n dacă lanțul elementar care are o extremitate în nodul respectiv și cealaltă extremitate în rădăcina arborelui are lungimea n. Pe nivelul o se află un singur nod (rădăcina). Un arbore cu rădăcină are 12 noduri, numerotate de la 1 la 12, și este reprezentat prin vectorul de "tați" (2,4,2,0,4,4,x,6,x,x,y,y). Indicați un set de valori pe care le pot avea x și y, știind că pe ultimul nivel există cinci noduri frunză și că un singur nod este numerotat cu o valoare egală cu numărul său de descendenți direcți ("fii") de tip "frunză".
A. x=11 y=12
B. x=8 y=3
C. x=3 y=8
D. x=3 y=3
Răspuns corect: C
Variabila x este de tip întreg. Indicați o expresie care are valoarea 1 dacă și numai dacă expresia C/C++ alăturată are valoarea 1. x>=3 && x<10
A. !(x<3 && x>=10)
B. !(x<3 || x>=10)
C. x<3 && !(x>=10)
D. !(x<3) || x>=10
Răspuns corect: B
```c++
int f(int x, int y) {
  if(x!=2 && x%2==0) return 0;
  if(y*y>x) return 1;
  if(x%y==0) return 0;
  return f(x,.........);
}
```
---
Subprogramul f este definit incomplet, alăturat. Indicați o expresie cu care pot fi înlocuite punctele de suspensie pentru ca f (n, 3) să aibă valoarea 1 pentru orice număr prim n (ne [2, 104]) și valoarea o în caz contrar.
A. y+2
B. y-2
C. y*2
D. y/2
Răspuns corect: A
Utilizând metoda backtracking, se generează toate posibilitățile de a forma platouri de câte trei fructe distincte din mulțimea {măr, gutuie, prună, caisă, piersică}, astfel încât pe același platou nu se află o gutuie și o piersică simultan. Două platouri sunt distincte dacă ele conțin cel puțin un fruct diferit. Primele patru soluții generate sunt, în această ordine, (măr, gutuie, prună), (măr, gutuie, caisă), (măr, prună, caisă), (măr, prună, piersică). Indicați soluția generată imediat după (gutuie, prună, caisă).
A. (caisă, piersică, măr)
B. (gutuie, prună, piersică)
C. (mar, caisă, piersică)
D. (prună, caisă, piersică)
Răspuns corect: D
Variabila jeste de tip întreg, iar variabila a memorează un tablou bidimensional cu 100 de linii și 100 de coloane, numerotate de la 0 la 99. Indicați valoarea variabilei j, dacă elementul A[20] [j] se află pe diagonala secundară a tabloului.
A. 20
B. 49
C. 79
D. 80
Răspuns corect: C
Un graf neorientat are 7 noduri, numerotate de la 1 la 7, și 8 muchii, dintre care șase sunt: [1,2], [2,4], [2,7], [3,4], [4,5], [4,6]. Știind că unul dintre lanțurile elementare care au lungimea maximă este 1, 2, 7, 5, 4, 6, indicați care ar putea fi celelalte două muchii ale grafului.
A. [1,4] și [4,7]
B. [1,4] și [5,7]
C. [2,5] și [4,7]
D. [3,6] și [5,7]
Răspuns corect: B
Indicați expresia C/C++ cu valoarea 2022.
A. 4044/4/2
B. 4044/(4*2)
C. 1011*1+1
D. 1011*(1+1)
Răspuns corect: D
```c++
int f(int n,int p) {
  if(n==0) return 0;
  else if(p==0) return n*10+2;
  else return f(n/10,p-1);
}
```
---
Subprogramul f este definit alăturat. Indicați valoarea parametrului x pentru care f(x, 3) are valoarea 2022.
A. 120234
B. 122023
C. 202345
D. 220223
Răspuns corect: C
Utilizând metoda backtracking, se generează toate posibilitățile de a expune câte trei mașini produse în România, din gama Dacia, din mulțimea {Dokker (negru), Duster (negru), Lodgy (gri), Logan (alb), Sandero (roșu)}, astfel încât să nu fie expuse simultan două mașini de aceeași culoare, Sandero să NU apară pe prima poziție, iar Logan să NU fie înainte de Dokker sau Duster. Două soluții sunt distincte dacă au cel puțin o mașină diferită sau dacă ordinea mașinilor este diferită. Primele cinci soluții generate sunt, în această ordine (Dokker, Lodgy, Logan), (Dokker, Lodgy, Sandero), (Dokker, Logan, Lodgy), (Dokker, Logan, Sandero), (Dokker, Sandero, Lodgy). Indicați penultima soluție, în ordinea generării acestora.
A. Logan, Lodgy, Sandero
B. Logan, Sandero, Lodgy
C. Lodgy, Dokker, Logan
D. Lodgy, Logan, Dokker
Răspuns corect: A
```c++
strcpy(s,"info@rocnee.eu");
s[strlen(s)-3]='\0';
strcpy(d,strchr(s,'@')+1);
```
---
Variabilele s și a permit memorarea câte unui șir cu maximum 50 de caractere. Indicați șirul memorat prin intermediul variabilei d în urma executării secvenței alăturate.
A. inf@r
B. info@
C. rocnee
D. rocnu
Răspuns corect: C
Într-un arbore cu 7 noduri, numerotate de la 1 la 7, nodul 1 este rădăcină și pentru orice nod numerotat cu i (i∈ [1,7]), dacă se notează cu F(i) numărul de descendenți direcți ("fii") ai săi, atunci F(i)=0, dacă i este "frunză", altfel F(i)=i+1. Indicați numărul maxim de "frați" ai nodului 7.
A. 4
B. 3
C. 2
D. 1
Răspuns corect: B
```c++
int f(int n,int c) {
  if(n==0) return 0;
  else
  if(n%10==c) return f(n/10,c);
  else return n%10+10*f(n/10,c);
}
```
---
Subprogramul f este definit alăturat. Indicați valorile pe care le pot avea parametrii n și c, astfel încât, în urma apelului, f (n,c) să aibă valoarea 2021.
A. n=2021 și c=0
B. n=200211 și c=2
C. n=312032 și c=3
D. n=720721 și c=7
Răspuns corect: D
Variabila m memorează elementele unui tablou bidimensional cu 100 de linii și 100 de coloane, numerotate de la 0 la 99. Indicați expresia C/C++ prin care poate fi accesat un element aflat pe diagonala secundară a tabloului.
A. m[42/42]
B. m[4242]
C. m[42]:[57]
D. m[42][57]
Răspuns corect: D
Un graf neorientat are 6 noduri, numerotate de la 1 la 6, și muchiile [1,2], [1,3], [2,3], [3,4], [3,5],[4,5], [5,6]. Indicați un ciclu elementar al acestui graf.
A. 1,2,3
B. 1,2,3,1
C. 1,2,3,4,5,3,1
D. 1,2,3,4,5,6,1
Răspuns corect: B
Într-un arbore cu rădăcină 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 o se află un singur nod (rădăcina). Într-un arbore cu rădăcină toate nodurile de pe același nivel au un număr egal de "fii" și nu există două niveluri diferite cu același număr de noduri. Indicați numărul minim de noduri de pe nivelul 3.
A. 12
B. 9
C. 8
D. 5
Răspuns corect: C
```c++
int f(int n) {
  if (n!=0)
  return (n%2)*(n%10)+f(n/10);
  return 0;
}
```
---
Subprogramul f este definit alăturat. Indicați valoarea lui f (1234).
A. 0
B. 4
C. 6
D. 10
Răspuns corect: B
Utilizând metoda backtracking se generează toate numerele formate din cifre distincte, cifre a căror sumă să fie 6. Primele patru soluții generate sunt, în această ordine: 1023, 1032, 105 și 1203. Indicați cea de a șasea soluție generată.
A. 1230
B. 132
C. 123
D. 15
Răspuns corect: A
Unui arbore cu 10 noduri i se adaugă o muchie, cu extremitățile în două dintre nodurile sale. Indicați numărul ciclurilor elementare pe care le conține graful obținut.
A. 0
B. 1
C. 9
D. 10
Răspuns corect: B
Un graf neorientat are 21 de noduri, numerotate de la 1 la 21; pentru oricare două noduri distincte ale sale, numerotate cu i, respectiv cu j, există muchia [i, j] dacă și numai dacă ultima cifră a lui i este egală cu ultima cifră a lui j. Indicați numărul valorilor nule din matricea de adiacență a grafului.
A. 2*21-102
B. 212-11
C. 212-2-12
D. 2*212-13
Răspuns corect: C
Variabila x este de tip întreg și memorează un număr nenul. Indicați expresia C/C++ cu valoarea 1 dacă 2021 este divizor al lui x.
A. x/(x/2021)==0
B. x/(x%2021)==0
C. x%(x/2021)==0
D. x%(x%2021)==0
Răspuns corect: C
Utilizând metoda backtracking se generează toate valorile naturale formate cu cifre ale numărului 2021 și care sunt strict mai mici decât acesta. Primele 12 soluții generate sunt, în această ordine, 0, 1, 10, 100, 1000, 1001, 1002, 101, 1010, 1011, 1012, 102. Indicați două soluții care se generează pe poziții consecutive, în această ordine.
A. 2002, 2020
B. 2020, 21
C. 122, 1221
D. 21, 22
Răspuns corect: B
```c++
struct masina
{
char model [51];
int an;
}x[10],y;
```
---
Variabilele x și y sunt declarate alăturat. Indicați o instrucțiune de atribuire corectă din punctul de vedere sintactic.
A. x[1]=y;
B. x.an[1]=y.an;
C. x[1].an.masina=y.an.masina;
D. model.x[1]=model.y;
Răspuns corect: A
Un arbore cu 11 noduri, numerotate de la 1 la 11, este reprezentat prin vectorul de "tați" (9,3,4,6,4,8,6,0,4,4,4). Indicați numărul de descendenți direcți ("fii") ai nodului 4.
A. 2
B. 3
C. 5
D. 6
Răspuns corect: C
Indicați numărul de noduri ale unui graf neorientat, complet, cu 210 muchii.
A. 14
B. 15
C. 20
D. 21
Răspuns corect: D
Indicați valoarea expresiei C/C++ alăturate. 3+5.0/2+2
A. 2
B. 5
C. 6
D. 7.5
Răspuns corect: D
```c++
void f(int i, int v[4]) {
  if(i>=3) v[i]=v[i]+1;
  else f(i+1,v);
  cout<<v[i];
}
```
---
Variabila  memorează un tablou unidimensional cu 4 elemente, numerotate începând de la 0. Subprogramul f este definit alăturat. Indicați setul de elemente pe care le poate avea tabloul memorat în v, în ordinea în care apar în acesta, astfel încât, în urma apelului de mai jos, să se afișeze pe ecran 2020.
f(0,v);
A. -1,1,0,2
B. 0,2,0,1
C. 1,-1,0,1
D. 2,0,1,0
Răspuns corect: B
Utilizând metoda backtracking se generează toate variantele prin care patru persoane pot plăti o consumație totală de 200 de lei în următoarele condiții: fiecare plătește o sumă nenulă, divizibilă cu 10; primul plătește mai mult decât al doilea, al doilea mai mult decât al treilea, iar acesta mai mult decât al patrulea. O soluție constă în patru valori, reprezentând, în ordine, sumele plătite de fiecare dintre cele patru persoane. Primele patru soluții generate sunt, în această ordine: (70, 60, 40, 30), (70, 60, 50, 20), (80, 50, 40, 30), (80, 60, 40, 20). Indicați cea de a șasea soluție, în ordinea generării acestora.
A. (80,60,45,15)
B. (80,60,50,10)
C. (80,70,30,20)
D. (80,70,40,10)
Răspuns corect: C
Un arbore cu 10 noduri, numerotate de la 1 la 10, este reprezentat prin vectorul de "tați" (7,5,6,5,7,0,6,3,3,8).Indicați numărul de noduri "frunză" ale acestui arbore.
A. 2
B. 3
C. 5
D. 6
Răspuns corect: C
Un graf neorientat cu 5 noduri este reprezentat prin matricea de adiacență alăturată. Indicați numărul grafurilor parțiale conexe ale acestuia care sunt diferite de graful dat.

0 1 0 1 1
1 0 1 0 0
0 1 0 1 0
1 0 1 0 0
1 0 0 0 0
A. 4
B. 6
C. 8
D. 30
Răspuns corect: A
Variabila X este de tip întreg și poate memora un număr natural din intervalul [0,109). Indicați valoarea maximă pe care o poate avea expresia C/C++ alăturată. x%2020
A. 20.2
B. 2019
C. 2020
D. 495049
Răspuns corect: B
```c++
void f(int x) {
  cout<<"*";
  if(x>5) f((x+1)/2);
}
```
---
Subprogramul f este definit alăturat. Indicați apelul în urma căruia simbolul * se afișează de trei ori.
A. f (30);
B. f(21);
C. f(17);
D. f(8);
Răspuns corect: C
Utilizând metoda backtracking se generează toate modalitățile de a prepara o băutură din câte 3 sau 4 tipuri de fructe distincte din mulțimea {căpșune, mere, pepene, pere, portocale}. Primele patru soluții generate sunt, în această ordine: (căpșune, mere, pepene), (căpșune, mere, pepene, pere), (căpșune, mere, pepene, portocale), (căpșune, mere, pere). Indicați cea de a șasea soluție generată.
A. (pepene, pere, portocale)
B. (mere, pepene, pere, portocale)
C. (căpșune, mere, portocale)
D. (căpșune, mere, pere, pepene)
Răspuns corect: C
Un arbore cu 9 noduri, numerotate de la 1 la 9, este reprezentat prin vectorul de "tați" (8,6,4,2,3,0,4,2,7). Indicați un "frate" al nodului 4.
A. 1
B. 2
C. 7
D. 8
Răspuns corect: D
Un graf neorientat eulerian cu 5 noduri are un nod cu gradul 4. Indicați numărul minim de muchii ale grafului.


A. 4
B. 6
C. 8
D. 10
Răspuns corect: B
Variabila x este de tip întreg și poate memora un număr din intervalul [1000,2000]. Indicați valoarea minimă pe care o poate avea expresia C/C++ alăturată. | (x-999)%1000
A. 0
B. 2
C. 999
D. 1000
Răspuns corect: A
```c++
void f(int x) {
  if(x>=2) {
    if(x%2==0) cout<<0;
    f(x/2);
  }
  else cout<<7;
  cout<<x;
}
```
---
Subprogramul f este definit alăturat. Indicați ce se afișează în urma apelului de mai jos. f(9);
A. 91
B. 942
C. 0071
D. 0071249
Răspuns corect: D
Utilizând metoda backtracking se generează toate meniurile care cuprind câte patru feluri distincte de mâncare din mulțimea {aperitiv, desert, legume, paste, salată, supă}, fiecare meniu respectând următoarele condiții: dacă există aperitiv, este servit primul; dacă există desert, este servit ultimul; NU sunt servite legume și salată în același meniu; dacă există paste și supă în același meniu, pastele NU sunt servite înainte de supă. Două meniuri sunt distincte dacă diferă prin cel puțin un fel de mâncare sau prin ordinea servirii acestora. Primele cinci meniuri generate sunt, în această ordine: (aperitiv, legume, paste, desert), (aperitiv, legume, supă, desert), (aperitiv, legume, supă, paste), (aperitiv, paste, legume, desert), (aperitiv, paste, salată, desert). Indicați al șaselea meniu generat.
A. (aperitiv, salată, paste, desert)
B. (aperitiv, salată, supă, desert)
C. (aperitiv, salată, supă, paste)
D. (aperitiv, supă, legume, desert)
Răspuns corect: A
Un arbore cu rădăcină are 20 de noduri, dintre care 10 noduri de tip "frunză". Indicați numărul maxim de noduri care au același "tată" în acest arbore.
A. 5
B. 7
C. 10
D. 15
Răspuns corect: C