Sunteți pe pagina 1din 68

Universitatea Tehnic 

"Gheorghe Asachi" din Ias, i


Facultatea de Automatic  s, i Calculatoare *
Admitere sesiunea iulie 2021
Domeniile: Calculatoare s, i tehnologia informat, iei
Ingineria sistemelor (Automatic  s, i informatic  aplicat )

Subiecte la testul gril  de Informatic 


1. Ce se as, eaz  pe monitor la rularea urm torului program:
#include <i o s t r e a m >
using namespace s t d ;
int main ( void )
{
int num , a =10;
int b = 0;
num = a&&b + −1&&a ;
c o u t << num << a << e n d l ;
return 0 ;
}

(a) 110 (b) 010 (c) La compilare vor ap rea erori (d) 00

2. Ce se va as, a la rularea secvent, ei urm toare?


int i , s = 0;
for ( i = 1 0 ; i > 0 ; i −−)
{
s = s + i;
c o u t << i −− << " " ; // p r i n t f ("%d " , i −−);
s = s − i;
}
c o u t << " s = " << s ; // p r i n t f (" s = %d " , s ) ;

(a) 10 8 6 4 2 s = 0
(b) 10 9 8 7 6 5 4 3 2 1 s = 45
(c) 10 8 6 4 2 s = 5
(d) 9 7 5 3 1 s = 5

3. Se consider  secvent, a din pseudocodul de mai jos, în care n s, i s sunt variabile de tip întreg. Cu ce valoare trebuie
init, ializat  variabila n, astfel încât rezultatul s  e 26?
s←0
cât timp n mod 2 ! = 0 execut 
s←s+n
n ← n div 2

(a) 9 (b) 7 (c) 15 (d) 21

4. Programul de mai jos va as, a:

1
void f ()
{
static int k = 4;
i f (−−k )
{
f ();
c o u t << k << " " ;
}
}
int main ( )
{
f ();
return 0;
}

(a) 1 2 3 (b) 3 2 1 (c) 0 0 0 (d) 3 2 1 0

5. Ce se as, eaz  pe monitor la rularea urm torului program:


#include <i o s t r e a m >
using namespace s t d ;
#define n 24
int main ( void )
{
int x ;
for ( x = 0 ; x < n ; x += 4 )
{
switch ( x )
{
case 0 : c o u t << x;
case 8 : c o u t << x;
default : break ;
case 4 : c o u t << x;
}
}
return 0;
}

(a) 0048 (b) 048 (c) La compilare vor ap rea erori (d) 0084

6. Pentru a cripta textul din vectorul x, Ionel foloses, te funct, ia denit  mai jos. De asemenea, hot r s, te s  utilizeze litera
Q pentru a marca toate caracterele albe (spat, iul, enter, tab, etc), iar n reprezint  num rul de caractere al vectorului
x. Care este formula utilizat  pentru decriptare dac  apelul pentru operat, ia de codicare a fost criptare(26) ?

void c r i p t a r e ( int p )
{
for ( int i =0; i <n ; i ++)
x [ i ] = ( ( ' Z '−x [ i ])%p+ ' a ' ) ;
}

void d e c r i p t a r e ( int p )
{
for ( int i =0; i <n ; i ++)
. . . // i n s t r u c t i u n e f o r m u l a d e c r i p t a r e
}

2
(a) x[i]=(('z'-x[i])%p+'A'); (b) x[i]=('z'-x[i]+'A'); (c) x[i]=(('z'-x[i])*p+'A'); (d) x[i]=('Z'-x[i]+'A')%p.

7. Fie v un vector s, i poz una din pozit, iile vectorului corect init, ializat . Ce operat, ie efectuat  asupra vectorului v necesit 
utilizarea urm torului cod?
for ( i = poz ; i <= N − 1 ; i ++)
v [ i ] = v [ i +1];
N = N − 1;

(a) Calcularea sumei elementelor vectorului aate intre pozitia poz si sfârs, itul vectorului
(b) Eliminarea unui element din vector
(c) Introducerea unui element în vector
(d) Interschimbarea elementului v[i] cu v[i+1] incepând de la pozitia poz si pân  la sfârs, itul vectorului

8. Ce se va as, a la consol  în urma apelului f (”Anaaremere”);, unde funct, ia f este denit  mai jos? Funct, iile strlen,
strcmp s, i strcat sunt din biblioteca string (sau din cstring ).
void f ( char a [ 1 0 0 ] )
{
char b [ 1 0 0 ] , c [ 1 0 0 ] ;
int n = s t r l e n ( a ) ;
int i , j ;
i = n − 1;
b [ 0 ] = ' \0 ' ;
c [ 3 ] = ' \0 ' ;
while ( i >1)
{
for ( j = i ; j >= i − 2; j = j − 1 )
c [ i −j ] = a [ j ] ;
i f ( strcmp ( c , " i n f " ) < 0 )
strcat (b , c ) ;
// s t r c a t ( b , c ) ;
i = i − 3;
}
cout<<b ; // p r i n t f ("% s " , b ) ;
}

(a) ereeremeraanaan (b) ereaan (c) Anaaremere (d) eremeraan

9. Fie A o matrice p tratic  de dimensiune n x n. Ce reprezint  Output din secvent, a de pseudocod de mai jos?
C ← 100
pentru i ← 1 la n execut 
pentru j ← 1 la n execut 
temp ← A[i][j] + C
A[i][j] ← A[j][i]
A[j][i] ← temp − C
pentru i ← 1 la n execut 
pentru j ← 1 la n execut 
Output(A[i][j])

(a) O matrice obt, inut  din matricea A la care s-a adaugat 100 la elementele de deasupra diagonalei principale
s, i s-a sc zut 100 din elementele de sub diagonala principal 

3
(b) O matrice obt, inut  din matricea A la care s-a adaugat 100 la elementele de deasupra diagonalei principale
s, i s-a scazut 100 din diagonalei matricei date
(c) Matricea A
(d) Transpusa matricei A

10. Fie urm torul program ce implementeaz  un algoritm care caut  într-un tablou unidimensional init, ializat cu elemente
în ordine strict cresc toare dou  numere a c ror diferent, a este d.
#define N 10
const int d = 1 8 ;
int v [N] = { 1 1 , 3 0 , 54 , 59 , 61 , 69 , 73 , 87 , 91 , 97};
int main ( )
{
int i = 0;
int j = 1;
while ( j < N)
{
if (E)
j ++;
else i f ( v [ j ] − v [ i ] == d )
break ;
else
i ++;
}
if ( j < N)
c o u t << " E x i s t a : ( " << v [ j ] << " − " << v [ i ] << " ) == " <<d ;
else
c o u t << "Nu e x i s t a " ;
return 0;
}

Care este expresia E:


(a) v[i] - v[j] < d
(b) v[j] - v[i] > d
(c) v[j] - v[i] < d
(d) v[i] - v[j] > d

11. Urm torul program determin  maximul elementelor unui tablou unidimensional v.


#define N 10
int Maxim( int v[] , int n);
int main ( )
{
int v [N] = { 1 3 , 1 1 3 , 9 7 , 6 , − 1, 6 9 , 7 4 , 3 1 , 1 1 1 , 9 7 } ;
c o u t << Maxim( v , N ) ; // p r i n t f ("%d " , Maxim( v , N) ) ;
return 0 ;
}
int Maxim( int v [ ] , int n)
{
int i = 0;
int j = n − 1;
while ( E )
{
if ( v [ i ] <= v [ j ] )

4
i = i + 1;
else
j = j − 1;
}
return v[ i ];
}

Care este expresia E:


(a) j == i
(b) j >= i
(c) j != i
(d) i <j-1

12. Un melc cade într-o fântân  adânc  de N metri. Care dintre secvent, ele de mai jos calculeaz  corect în câte zile (Z )
va sc pa melcul din fântân , s, tiind c  într-o zi întâi urc  X metri s, i apoi alunec  Y metri? O dat  ce melcul a ies, it
din fântân , nu mai poate s  cad  înapoi. Variabilele N , X , Y , Z sunt de tipul long int, iar N > X > Y .
(a) Z = N/(X − Y );
(b) Z = (N − Y )/(X − Y );
(c) Z = (N %X == 0)?(N/(X − Y )) : (N/(X − Y ) − 1);
(d) Z = (X%Y == 0)?(N/(X − Y )) : (N/(X − Y ) − 1);

13. Fie urm torul pseudocod:


functia f(x)
,

y←1
z←1
cât timp x > y execut 
y ←y+1
z ←z∗y
returneaz  z
Care dintre urm toarele instruct, iuni dau ca rezultat valoarea 719?
(a) f(6) (b) f(6) − 1 (c) f(7) (d) f(7) − 1

14. Se consider  6 secvenµe de numere sortate cresc tor. Dimensiunile secvenµelor sunt 10, 5, 35, 40, 5, 30. Pentru
interclasarea a dou
a secvenµe de dimensiuni n respectiv m, sunt necesare n + m operaµii. Care este num rul minim
de operaµii pentru interclasarea celor 6 secvenµe?
(a) 270 (b) 280 (c) 250 (d) 125

15. Tat l lui Cristian dore³te s  cumpere cât mai multe bomboane pentru bradul de Cr ciun, dar nu are la el decât 20
lei. Bomboanele sunt în 5 cutii. Tabelul de mai jos cont, ine pret, ul ec rei cutii ³i num rul de bomboane aate în
aceasta. Nu exist  dou  cutii din aceea³i categorie.

Cutia 1 2 3 4 5
Pret, ul 5 8 3 6 10
Num rul de bomboanedin cutie 10 8 15 18 40

Vânz torul spune c  este dispus s  deschid  doar o cutie, pentru a completa cu bomboane din ea pân  la suma de
20 lei.
Care este cutia pe care o alege tat l lui Cristian pentru a  deschis ?
(a) 2 (b) 1 (c) 3 (d) 5

5
16. Sa presupunem c a dorim s a înmulµim dou a numere întregi, x ³i y , formate din n cifre. Presupunem c a x si y
sunt pozitive (de exemplu x = 61438521 ³i y = 94736407). Spargem acum x în jum at
aµile xs ³i xd (xs = 6143,
xd = 8521). Spargem apoi y în dou a jumat
aµi ys ³i yd (ys = 9473 ³i yd = 6407). Vom avea x = xs 10n/2 + xd
³i y = ys 10 n/2
+ yd ³i xy = xs ys 10 + xs yd 10n/2 + xd ys 10n/2 + xd yd (x = xs 104 + xd ³i y = ys 104 + yd ³i xy =
n

xs ys 10 + xs yd 104 + xd ys 104 + xd yd ). xy se obt, ine în acest fel cu 4 înmulµiri de numere formate din n/2 cifre.
8

Înmult, irea cu 10 se face prin adaugarea unui 0 la dreapta num rului. Nu este considerat  operat, ie de inmult, ire. Cum
putem efectua înmult, irea xy cu 3 înmulµiri de numere formate din n/2 cifre?
(a) xy = xs (ys 10n/2 + yd )10n/2 + xd ys 10n/2 + xd yd
(b) xy = xs ys 10n + xs yd 10n/2 + xd (ys 10n/2 + yd ).
(c) xy = ys (xs 10n/2 + xd )10n/2 + xs yd 10n/2 + xd yd
(d) xy = xs ys 10n + xd yd + [(xs − xd )(yd − ys ) + xs ys + xd yd ]10n/2

17. Fie G un graf neorientat cu n noduri s, i m muchii. Câte muchii cont, ine complementul lui G? Graful G' este
complementul unui graf G dac  oricare dou  noduri adiacente în G nu sunt adiacente în G' ³i invers.
(a) (n − 1)2 − m (b) n2 − m/2 (c) n ∗ (n − 1)/2 − m (d) n!/m!

18. Fie un arbore binar oarecare cu N niveluri în care r d cina se consider  a  pe nivelul 1. Care din urm toarele
armat, ii este adevarat ?
(a) Arborele poate avea maxim 512 noduri pe al 10-lea nivel
(b) Numarul maxim de frunze cand N = 10 este 1024
(c) Arborele poate avea maxim 1024 noduri când N = 10
(d) Dac  arborele este strict (are doar noduri de grad 0 sau 2), atunci num rul de frunze este cu 1 mai mic
decat numarul de noduri de grad 2

19. Se dores, te utilizarea unei structuri de date de tip graf pentru reprezentarea h rt, ii de teren într-un joc 3D de tip
RTS (Real Time Strategy), de ex. Warcraft I, II. Harta de teren este descris  de o ret, ea de triunghiuri (ca o plas ).
Fiecare nod din graf reprezint  un triunghi din aceast  ret, ea. Între dou  noduri din graf exist  o muchie dac  cele
dou  noduri corespund unor triunghiuri adiacente (au o latur  comun ). Graful este construit în timpul execut, iei
jocului (`on-the-y') pe masur  ce juc torul exploreaz  mediul virtual s, i interact, ioneaz  cu acesta. Ce structur  de
date at, i folosi pentru reprezentarea grafului?
(a) Lista de adiacent,   deoarece permite actualizarea mai rapid  grafului (ad ugarea/s, tergerea de noduri/mu-
chii)
(b) Lista de adiacent,   deoarece ecare nod din graf va avea foarte multe muchii
(c) Matrice de adiacent,   deoarece ecare nod din graf va avea foarte multe muchii
(d) Matrice de adiacent,   deoarece permite actualizarea mai rapid  a grafului (ad ugarea/s, tergerea de noduri-
/muchii)

20. În lt, imea unui arbore se denes, te ca ind num rul de muchii din cea mai lung  cale din arbore. Funct, ia de mai
jos descris  în pseudocod calculeaz  s, i returneaz  în lt, imea unui arbore binar pentru care se cunoas, te r d cina
acestuia notat  cu rad. Subarborelui stâng al rad cinii se noteaz  u_stâng(rad) iar subarborele drept se noteaz 
u_drept(rad). Un subarbore vid are r d cina nul  s, i în lt, imea 0.

6
functia f(rad)
,

dac  rad = 0 atunci


returneaz -1;
dac  f iu_stang(rad) = 0 atunci
dac  f iu_drept(rad) = 0 atunci
returneaz  0;
altfel
returneaz  B1;
altfel
h1=f(f iu_stang(rad));
dac  f iu_drept(rad) = 0 atunci
returneaz  h1 + 1;
altfel
h2=f(u_drept(rad));
returneaz  B2;

Expresiile corecte pentru secventele B1 s, i B2 sunt:


(a) B1 : 1 + f (f iu_drept(rad)), B2 : 1 + max(h1, h2)
(b) B1 : f (f iu_drept(rad)), B2 : 1 + max(h1, h2)
(c) B1 : f (f iu_drept(rad)), B2 : max(h1, h2)
(d) B1 : 1 + f (f iu_drept(rad)), B2 : max(h1, h2)

21. Dac  un graf complet neorientat are 15 noduri, care este num rul minim de muchii ce trebuie eliminate pentru a
obt, ine un arbore binar cu exact 3 niveluri în afar  de nivelul r d cin  (se consider  r d cina pe nivelul 0).
(a) 91 (b) 105 (c) 13 (d) 99

22. Ce tip res, te urm toarea funct, ie pentru n=25?


void fun ( int n )
{
if ( n != 0 )
{
cout<<n%2; // p r i n t f ("%d " , n%2);
fun ( n / 2 ) ;
}
}

(a) 11001 (b) 10011 (c) 11111 (d) 10110

23. Se consider  o stiv  de capacitate n implementat  static cu un vector de n elemente. Operat, iile de inserare s, i stergere
se realizeaz  utilizând indexul VÂRF (indic  pozit, ia ultimei valorii inserate în stiv ). Dac  stiva este goal , valoarea
se va insera pe pozitia 0 (indexul VÂRF=0). Condit, iile necesare pentru a detecta stiva plin  s, i stiva goal  sunt:
(a) Plin : V ARF = n, Goal : V ARF = 0
(b) Plin : V ARF = n, Goal : V ARF = −1
(c) Plin : V ARF = n − 1, Goal : V ARF = −1
(d) Plin : V ARF = n − 1, Goal : V ARF = 0

7
24. Fie urm toarea matrice cu 5 linii s, i 5 coloane cu elementul de pe prima linie s, i prima coloan  aat pe pozit, ia 0, 0:
1 1 1 0 0
1 0 0 1 0
1 0 0 0 1
1 1 1 0 0
0 1 1 0 0
Ce va as, a funct, ia urm toare dac  se apeleaz  functie(2, 2)?
void f u n c t i e ( int x , int y)
{
c o u t << "x = " << x << " y = " << y << e n d l ;
i f ( m a t r i c e [ x ] [ y ] != 1 && x > 0 && y > 0 )
functie (x − 1 , y − 1);
}

(a) (b) (c) (d)


x = 2 y = 2 x = 1 y = 1 x = 2 y = 2
x = 1 y = 1 x = 2 y = 2
x = 0 y = 0 x = 1 y = 1
x = 0 y = 0

25. Antrenorul de karate de la clubul K'Kids scrie un program cu ajutorul c ruia s  p streze informat, iile necesare despre
ecare copil înscris în club. El foloses, te un tablou de N elemente în care stocheaz  informat, ii despre numele s, i vârsta
ec rui copil, astfel încat s -i e us, or s -i ordoneze pe copii atât alfabetic cât t, i dup  vârst . Fiecare element din
tablou este reprezentat printr-o structur  cu trei câmpuri: nume, varsta, idxN ext.

Informat, iile despre copii sunt stocate în tablou în ordine alfabetic . Câmpul idxN ext este folosit pentru a indica
ordinea în care trebuie parcurse elementele tabloului pentru a-i obt, ine pe copii în ordinea crescatoare a vârstei. Dac 
mai mult, i copii au aceeas, i vârst , aces, tia sunt ordonat, i s, i dupa nume. Pentru a indica ultimul element din ordonarea
dup  vârst  se foloses, te valoarea −1 pentru campul idxN ext. Indexul în tabel al copilului cu vârsta cea mai mic  este
stocat în variabila celM aiM ic. Care din urmatoarele variante de pseudocod corespund unei funct, ii care îl poate ajuta
pe antrenor s  as, eze copiii în ordinea descrescatoare a vârstei? Funct, ia primeste ca parametri tabloul de elemente
s, i un index în tablou. La apelul funct, iei în programul principal, parametrul idx va lua valoarea celM aiM ic.

functia f(V , idx)


,
functia f(V , N , idx)
, crt ← idx
(a) pentru crt ← N − 1 la 0 execut  cât timp crt 6= −1 execut 
(c)
print(nume(V [crt]), varsta(V [crt])) print(nume(V [crt]), varsta(V [crt]))
crt ← idxN ext(V [crt])

functia f(V , idx)


, functia f(V , idx)
,

dac  idx 6= −1 atunci dac  idx 6= −1 atunci


(b) f(V , idxN ext(V [idx])) (d) print(nume(V [idx]), varsta(V [idx]))
print(nume(V [idx]), varsta(V [idx])) f(V , idxN ext(V [idx]))

8
Universitatea Tehnic  "Gheorghe Asachi" din Ias, i
Facultatea de Automatic  s, i Calculatoare *
Admitere sesiunea iulie 2021
Domeniile: Calculatoare s, i tehnologia informat, iei
Ingineria sistemelor (Automatic  s, i informatic  aplicat )

Subiecte la testul gril  de Informatic 


1. Se consider  un vector vec de numere naturale cu n elemente. Care din algoritmii urm tori descriu pas, ii necesari
calcul rii mediei aritmetice a elementelor vectorului?
(a) (c)
s = 0; s = 0;
for ( i = 0 ; i < n ; i ++) for ( i = 0 ; i < n ; i ++)
{ {
s = s + vec [ i ] ; s = s + i;
} s = s /n ;
s = s /n ; }

(b) (d)
s = 0; s = 0;
for ( i = 0 ; i < n ; i ++) for ( i = 0 ; i < n ; i ++)
{ {
s = s + vec [ i ] ; s = s + i;
s = s /n ; }
} s = s /n ;

2. Ce se va as, a dup  rularea secvent, ei de cod de mai jos, dac  de la tastatur  se vor citi valorile 10 s, i 15 în aceast 
ordine?
int main ( )
{
int x,y;
c i n >>x>>y ;
while ( x = y )
{
i f ( x>y )
x = x − y;
else
y = y − x;
}
cout<<x ;
return 0 ;
}

(a) 5 (b) 10 (c) 15 (d) 0

3. Se consider  un s, ir de numere întregi care se termin  cu valoarea zero, de forma a1, ..., an, 0. Se cere determinarea
produsului numerelor introduse. Pentru secvent, a de cod de mai jos, s  se analizeze posibilitatea ca instruct, iunea
while s  e înlocuit  cu instruct, iunea do ... while în cazul introducerii de la tastatur  a s, irului de valori 4 2 1 3 0.
int a = 1 , p = 1;
while ( a != 0 )

1
{
c i n >> a ;
p = p ∗ a;
}
c o u t << "p = " << p ; // p r i n t f (" p = %d " , p ) ;

Care dintre urm toarele armat, ii este adev rat ?


(a) instruct, iunea while poate  înlocuit  cu do ... while, iar p = 24
(b) Instruct, iunea while nu poate  înlocuit  cu do ... while
(c) instruct, iunea while nu poate  înlocuit  cu do ... while, iar p = 24
(d) instruct, iunea while poate  înlocuit  cu do ... while, iar p = 0

4. Ce se va as, a la rularea secvent, ei urm toare?


int i , s = 5;
for ( i = 0 , s = 0 ; i < 5 ; i = i + 2)
{
while ( i++ < 5 )
s = s + i;
c o u t << " s = " << s << e n d l ;
}

(a) s = 10
(b) s = 15
s = 30
s = 45
(c) s = 15
(d) s = 20

5. Ce se va as, a la rularea secvent, ei urm toare?


int i , j ;
char c = 'A ' ;
for ( i = 3 ; i > 0 ; i −−)
{
for ( j = i ; j >= 0 ; j −−)
c o u t << ( char ) ( c + j ) ;
c o u t << " " ;
}

(a) DCB CB B (b) DCBA CBA BA (c) CBA BA A (d) DCBA CBA BA A

6. Ce se a³eaz  la rularea urm toarei secvent, e de cod? Se consider  c  indexul primului element al vectorului este 0
(zero).
#include <i o s t r e a m >
using namespace s t d ;
int main ( void )
{
int a [ 5 ] = {1 , 2 , 3 , 4 , 5};
int i , j , m;
i = ++a [ 2 ] ;
j = a [1]++;

2
m = a [ i ++];
c o u t << i << " , " << j << " , " ;
c o u t << m << e n d l ;
return 0 ;
}

(a) 5, 2, 5
(b) 4, 2, 5
(c) 4, 2, 4
(d) 5, 3, 5

7. Pentru a calcula în mod ecient media aritmetic  a elementelor diagonalei principale a unui tablou bidimensional
p tratic de dimensiune n cu componente numere naturale este necesar s, i sucient s  se execute:
(a) O singur  instruct, iune de atribuire
(b) O singur  parcurgere a diagonalei principale s, i o atribuire
(c) O singur  parcurgere a diagonalei principale s, i n atribuiri
(d) O singur  parcurgere a tabloului s, i n + 1 atribuiri

8. Se consider  un vector cu n = 8 elemente de tip întreg, declarat s, i init, ializat astfel (indexul primului element este 0):
int vec [ ] = { 1 , 4 , 5 , 4 , 2 , 4 , 6 , 7 } ;

Cum va arata vectorul dup  rularea urm torului cod?


for ( i = 0 ; i < n ; i ++)
i f ( i % 3 == 0 )
vec [ i ] = 0 ;

(a) 0 4 5 0 2 4 0 7
(b) 1 4 5 4 2 4 0 7
(c) 1 0 5 0 0 0 0 7
(d) 0 4 0 4 2 4 6 0

9. Fie o matrice cu 5 linii s, i 5 coloane notat  în secvent, a de mai jos matrice. Elementul de pe prima linie s, i prima
coloan  aat pe pozit, ia 0, 0:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Ce va as, a urm toarea funct, ie dac  va  apelat  cu valoarea 2?
void f u n c t i e ( int v a l )
{
int i, j, s = 0;
for ( i = 0; i < 5 ; i ++)
s = s + matrice [ i ] [ val ] ;
for ( i = 0; i < 5 ; i ++)
s = s + matrice [ val ] [ i ] ;

c o u t << " s = " << s ;


}

3
(a) 25 (b) 30 (c) 35 (d) 40

10. Se consider  urm toarea funct, ie reprezentat  în pseudocod (s-a notat cu a un tablou bidimensional cu n linii s, i m
coloane):
functia f(a, n, k)
,

s←0
pentru i ← 1 la n execut 
s ← s + a(i, k)
returneaz  s
s, i procedura Algoritm (scris  de asemenea în pseudocod)
procedura Algoritm
k←1
V ← f (a, n, 1)
pentru i ← 2 la m execut 
val ← f (a, n, i)
dac  val > V atunci
V ← val
k←i
scrie k
Ce se as, eaz  la rularea programului care implemeteaz  psudocodul dat?
(a) Indicele coloanei de sum  maxim 
(b) Indicele coloanei de sum  minim 
(c) Indicele liniei de sum  maxim 
(d) Indicele liniei de sum  minim 

11. Fie secvent, a de program:


for ( i =1; i<=n ; i ++)
instructiune1
{
instructiune2
a [ j ] [ i ]=a [ i ] [ j ] ;
}

Care sunt instruct, iunile ce lipsesc pentru ca dup  execut, ie, în cazul în care n = 4, matricea a s  aib  valorile :
1230
2301
3012
0123
(a) instructiune1: for (j=1; j<=n; j++) instructiune2: a[i][j] = i+j-1;
, ,

(b) instructiune1: for (j=i; j<=n; j++) instructiune2: a[i][j] = (i*n+j)%n;


, ,

(c) instructiune1: for (j=i; j<=n; j++) instructiune2: a[i][j] = (i+j-1)%n;


, ,

(d) instructiune1: for (j=i; j<=n; j++) instructiune2: a[i][j] = (i*n+j-1)%n;;


, ,

12. Se consider  algoritmul de sortare cresc toare prin metoda bulelor aplicat la secvent, a de numere 2,4,1,7,3,5. Care
este secvent, a obt, inut  dup  prima parcurgere?
(a) 1,2,3,4,5,7 (b) 2,1,4,3,5,7 (c) 1,2,4,3,5,7 (d) 5,4,3,2,1,7

4
13. Considerând variabilele întregi n, s, i, j declarate, ce complexitate are urm toarea secvenµ  de cod?
s = 0; i = 1;
while ( i <n ) {
j = 1;
while ( j <n )
{ s += i + j ; j ∗= 2 ; }
i = j;
}

(a) O(n) (b) O(log2 (n)) (c) O(n2 ) (d) O(n · log2 (n))

14. Fie 6 s, iruri de caractere (prune, portocale, mere, ananas, smochine, clementine ) s, i un program care concateneaz 
s, irurile dou  câte dou , astfel încât, în nal, s  rezulte un s, ir format din toate cuvintele, dar nu neap rat în ordinea
init, ial . Programul concateneaz  cuvintele astfel încât num rul de acces ri ale literelor s  e minim.
De exemplu, pentru concatenarea cuvintelor prune s, i portocale sunt necesare 14 acces ri (5 pentru accesarea literelor
cuvântului prune s, i 9 pentru accesarea cuvântului portocale ). Dac  acest rezultat (pruneportocale ) este concatenat
cu mere, atunci va rezulta s, irul pruneportocalemere în 18 acces ri.
Care este num rul minim de acces ri pentru a concatena dou  câte dou  cele 6 cuvinte astfel încât s  rezulte un s, ir
format din toate cuvintele (Atent, ie! cuvintele nu trebuie concatenate neap rat în ordinea în care au fost date).
(a) 123 (b) 42 (c) 107 (d) 130

15. Ce valoare va avea variabila count în urma execut, iei funct, iei f ?
int n = 6;
int a[23];
int count = 0 ;

void f ()
{
int i ;
if (a [0])
count++;
for ( i=a [ a [ 0 ] ] + 1 ; i<=n ; i ++)
{
a[++a [ 0 ] ] = i ; f ( ) ; a [ a [0] − − ]=0;
}
}

(a) 64 (b) 63 (c) 32 (d) 31

16. Citind despre spioni s, i despre diverse modalit t, i de a codica mesajele, Mickey s, i Minnie, se hot r sc s  îs, i codice
mesajele. Pentru ca mesajul lor s  nu poat   înt, eles de altcineva, ei procedeaz  astfel: aleg împreun  un cuvânt
numit "cheie", format numai din litere mari, distincte. Apoi, împart mesajul pe care doresc s -l transmit  între ei în
secvenµe de caractere al turate de lungime egal  cu num rul de litere ale cuvântului cheie. Scriu pe foaie cuvântul
cheie ales s, i sub acesta se scriu secvenµele determinate anterior, în ordinea obµinerii lor. Desigur, exist  posibilitatea
ca ultima grup  s  e incomplet . Mesajul codicat se obt, ine astfel: se parcurge tabelul obt, inut anterior, pe coloane,
de sus în jos, ordinea de parcurgere a coloanelor este ordinea alfabetic  a literelor din cuvântul cheie. Considerând
cuvântul cheie SUBIECT, care este decodicarea mesajului MLREITT AIAMAEFCRNID OA:
(a) INFORMATICA LA ADMITERE
(b) LA ADMITERE INFORMATICA
(c) ADMITERE LA INFORMATICA
(d) ADMITE REAL INFORMATICA

5
17. Se consider  un graf neorientat. Care dintre urm toarele propozit, ii este adev rat ?
P: Num rul de vârfuri de grad impar este par
Q: Suma gradelor tuturor vârfurilor este par 
(a) Numai P (b) Numai Q (c) S, i P s, i Q (d) Nici P nici Q

18. Fie G un graf bipartit neorientat, cu cele dou  seturi de noduri cont, inând m, respectiv n noduri. Dac  G este bipartit
complet, câte muchii cont, ine?
Un graf bipartit neorientat complet este un graf în care ecare pereche de noduri din cele dou  seturi (un nod din
primul set, cel lalt nod din al doilea set) este conectat  printr-o muchie.
(a) mn (b) m + n (c) m ∗ n (d) Cm
n

19. Fie un arbore binar în care ecare nod poate avea maxim doi i s, i, pentru ecare nod, subarborele stâng cont, ine
valori mai mici decât cea a nodului, iar cel drept cont, ine valori mai mari decât cea a nodului. În acest arbore se
introduc N numere (N este divizibil la 4). Primele 25% dintre numerele introduse sunt în ordine cresc toare, iar
urm toarele 75% sunt numere mai mici decât primele s, i sunt introduse în ordine descresc toare.
Care este în lt, imea arborelui rezultat?
În lt, imea unui arbore este num rul de leg turi (arce) de pe cea mai lung  cale de la r d cin  la o frunz .
(a) 3 ∗ N/4 (b) 3 ∗ N/4 − 1 (c) log2 N (d) 3 ∗ N/4 + 1

20. Fie G un graf turneu. Care este num rul total de posibilit t, i în care pot  aranjate muchiile acestui graf?
Un graf turneu este un graf orientat în care ecare pereche de noduri distincte este conectat  printr-o singur  muchie
orientat .
(a) n! (b) 2n∗(n−1)/2 (c) n2 (d) Cn2

21. Fie un graf neorientat cu 100 de vârfuri numerotate de la 1 la 100. Se s, tie c  de la ecare vârfuri k exist  muchie la
vârfurile [k/2] (parte întreag  din k/2), 2 ∗ k s, i 2 ∗ k + 1 (doar pentru valorile vârfurilor de la 1 la 100). De exemplu,
de la vârful 7 exist  muchie la vârfurile 3, 14 s, i 15; în schimb, de la vârful 50 exist  muchie doar c tre vârfurile 25 s, i
100. Care este diametrul grafului? Diametrul unui graf este denit ca maximul distant, ei minime între dou  vârfuri.
Distant, a minim  între dou  vârfuri reprezint  num rul minim de muchii necesare pentru a ajunge de la un vârf la
cel lalt.
(a) 10 (b) 12 (c) 100 (d) 6

22. Fie urm torul pseudocod:


functia f(x, y)
,

dac  x = y atunci
returneaz  x + y
altfel
returneaz  1 + f(x + 1, y − 1)

Care este rezultatul apelului f(1000, 1500)?


(a) 3500 (b) 2500 (c) 3000 (d) 2750

23. Se consider  urm toarea funct, ie recursiv :


int f r ( unsigned long int n)
{
long int n1 = n/10;
i f ( n1 == 0 )
return 1 ;

6
else
return 1+ f ( n1 ) ;
}

Care dintre urm toarele funcµii nerecursive este echivalent  cu funcµia f r (o funcµie f este echivalent  cu o alt  funcµie
g dac  pentru acelea³i date de intrare se obµin acelea³i rezultate)?

(a)
(b)
int f ( unsigned long int n)
{ int f ( unsigned long int n)
int j = 0; {
do { int j = 0 ;
j ++; while ( n%10== 0 ) {
n /= 1 0 ; j ++;
} while ( n != 0 ) ; n /= 1 0 ;
return j ; }
} return j;
}

(c) (d)
int f ( unsigned long int n) int f ( unsigned long int n)
{ {
int j = 0; int j = 0;
while ( n /10 != 0 ) do {
{ j ++;
j ++; n /= 1 0 ;
n /= 1 0 ; } while ( n == 0 ) ;
} return j ;
return j; }
}

24. Se consider  o coad  circular  de capacitate (n  1) implementat  static cu un vector de n elemente. Operat, iile de
inserare s, i stergere se realizeaz  utilizând idici PRIM (indic  pozit, ia valorii ce poate  s, tears ) s, i ULTIM (pozit, ia
liber  unde se poate insera o valoare). O pozit, ie va r mâne goala când coada este plin  s, i dac  unul din indici ajunge
pe ultima pozitie din vector poate trece pe pozit, ia 0 dac  aceasta este liber . Init, ial, PRIM = ULTIM = 0.
Condit, iile necesare pentru a detecta coada plin  s, i coada goal  sunt:
(a) P lina : (U LT IM + 1) mod n = P RIM, Goala : U LT IM = P RIM
(b) P lina : (U LT IM + 1) mod n = P RIM, Goala : (P RIM + 1) mod n = U LT IM
(c) P lina : U LT IM = P RIM, Goala : (U LT IM + 1) mod n = P RIM
(d) P lina : (P RIM + 1) mod n = U LT IM, Goala : U LT IM = P RIM

25. Alecu se duce la banc  s, i depune s lei într-un cont special. Dobânda este de 0,5% pe lun  s, i se depune în cont la
sfârs, itul ec rei luni. S, tiind c  funct, ia main este de forma:
int main ( void )
{
int n = 1 2 ;
double s = 1 0 0 0 0 ;
s = f (s , n);

7
c o u t << s << e n d l ;
return 0;
}

care dintre urm toarele funct, ii îi permite lui Alecu s  ae care va  suma pe care poate s  o retrag  de la banc  dup 
n luni?

I. II .
double f ( double s , int n) double f ( double s , int n)
{ {
i f (n == 0 ) i f (n == 0 )
{ {
return s; return s;
} }
else else
{ {
return (1 + 0.5/100/12) return (1 + 0.5/100/12)
∗ f ( s , −−n ) ; ∗ f ( s , n −−);
} }
} }

III . IV .
void f ( double s , int n) double f ( double s , int n)
{ {
double s 1 = s; double s 1 = s;
int i = 0 ; int i = 0 ;
while ( i <= n ) while ( i < n)
{ {
s 1 ∗= ( 1 + 0 . 5 / 1 0 0 / 1 2 ) ; s 1 ∗= ( 1 + 0 . 5 / 1 0 0 / 1 2 ) ;
++i ; i ++;
} }
} return s1 ;
}

(a) I s, i IV
(b) I s, i II
(c) III s, i IV
(d) II s, i III

8
Universitatea Tehnic  "Gheorghe Asachi" din Ias, i
Facultatea de Automatic  s, i Calculatoare *
Admitere sesiunea iulie 2021
Domeniile: Calculatoare s, i tehnologia informat, iei
Ingineria sistemelor (Automatic  s, i informatic  aplicat )

Subiecte la testul gril  de Informatic 


1. Care dintre operatorii (==) s, i (=) pot  aplicat, i unei variabile de tip structur  ?

(a) comparare egalitate (==) (b) asignare (=) (c) ambii operatori (d) nici unul

2. Care dintre relat, iile de mai jos indic  apartenent, a variabilei x întregi la intervalul (−10, −2] ∩ [−7, 11].
(a) !(((x <= −10)&&(x > 11))||((x < −7)&&(x > −2)))
(b) !(((x <= −10)||(x > 11))&&((x < −7)||(x > −2)))
(c) !(((x <= −10)&&(x > 11))&&((x < −7)&&(x > −2)))
(d) !(((x <= −10)||(x > 11))||((x < −7)||(x > −2)))

3. Ce va as, a programul de mai jos:


int x = 5;
int main ( )
{
int x = x;
c o u t << x ;
return 0 ;
}

(a) Eroare de compilare (b) Valoare nedenit  (c) 5 (d) 0

4. Ce se va as, a la rularea secvent, ei urm toare?


int i , j , s = 0;

for ( i = 0 ; i < 5 ; i = i + 2)
{
for ( j = 5 ; j > 3 ; j = i − 2)
{
s = s + 1;
}
}
c o u t << " s = " << s ;

(a) s = 1
(b) s = 2
(c) s = 3
(d) s = 4

5. Ce se as, eaz  la rularea urm toarei secvent, e de cod (indexul primului element din vector este 0, astfel x[0] are valoarea
'a'):

1
{
int x [ ] = { 'a ' , ' b' , ' c', ' j '}, i ;

for ( i =0; i <4; i ++)


{
if (x [ i ] < ' c ')
{
if ( x [ i ] = 3)
{
c o u t << "A" ;
}
else
{
c o u t << "B" ;
}
}
else
{
if (x [ i ] < ' i ')
{
if (x [ i ] > ' g' )
{
c o u t << "C" ;
}
}
else
{
c o u t << "D" ;
}
}
}
c o u t << " ? " ;
}

(a) AAD?
(b) AAC?
(c) ABCD?
(d) BCD?

6. Într-un magazin de produse alimentare, pret, ul produselor scade cu cât acestea se apropie de data de expirare, dup 
urm torul algoritm: începând cu 5 zile înaintea datei expir rii, pret, ul scade cu câte 10 % pe zi fat  de pret, ul init, ial,
ajungând în ziua expir rii s  e redus cu 50%. Algoritmul de stabilire a pret, urilor se ruleaz  în ecare dimineat,  
înainte de deschiderea magazinului.
De exemplu, dac  un produs cost  100 de lei s, i expir  pe 20 decembrie 2019, pret, ul se va reduce pe 16 decembrie la
90 de lei s, i va ajunge pe 20 decembrie la 50 de lei.
Care este varianta corect  a subrutinei calculPret pentru realizarea acestui algoritm? Se consider  deja scris  s, i
funct, ional  o subrutin  care calculeaz  câte zile mai sunt pân  la expirarea produsului.
(a)
void calculPret ()
{
if ( zilePanaLaExpirare < 5)
pretDeAfisat = p r e t I n i t i a l − p r e t I n i t i a l * ((5 − zilePanaLaExpirare ) / 1 0 . 0 ) ;
else

2
pretDeAfisat = p r e t I n i t i a l ;
}

(b)
void calculPret ()
{
if ( zilePanaLaExpirare < 5)
pretDeAfisat = p r e t I n i t i a l * ( (5 − zilePanaLaExpirare ) / 1 0 . 0 ) ;
else
pretDeAfisat = p r e t I n i t i a l ;
}

(c)
void calculPret ()
{
if ( zilePanaLaExpirare < 5)
pretDeAfisat = p r e t I n i t i a l − (5 − zilePanaLaExpirare ) / 1 0 . 0 ;
else
pretDeAfisat = p r e t I n i t i a l ;
}

(d)
void calculPret ()
{
if ( zilePanaLaExpirare < 5)
pretDeAfisat = p r e t I n i t i a l ;
else
pretDeAfisat = p r e t I n i t i a l − (5 − zilePanaLaExpirare ) / 1 0 . 0 ;
}

7. Care din urm toarele declarat, ii ale unui tablou bidimensional sunt corecte:
char m1 [ 2 ] [ 3 ] = { 'a ' , 'b' , 'c' , 'd' , 'e' , ' f ' };
char m2 [ ] [ ] = { 'a ' , 'b' , 'c' , 'd' , 'e' , ' f ' };
char m3 [ ] [ 2 ] = { 'a ' , 'b ' , 'c ' , 'd ' , 'e ' , ' f ' };

char m4 [ 2 ] [ ] = { 'a ' , 'b ' , 'c ' , 'd ' , 'e ' , ' f ' };

(a) Doar m1
(b) m3 s, i m1
(c) Toate
(d) m1, m2 s, i m4

8. Fie matricea m, care are elementul de pe prima linie s, i prima coloan  cu indecs, ii 0, 0:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Cum va ar ta matricea m dup  rularea codul urm tor:
for ( i = 0 ; i < 5 ; i ++)
for ( j = i + 1 ; j < 5 ; j ++)
{

3
aux = mat [ i ] [ j ] ;
mat [ i ] [ j ] = mat [ j ] [ i ] ;
mat [ j ] [ i ] = aux ;
}

1 2 3 4 5 1 1 1 1 1 5 5 5 5 5 5 5 5 5 5
1 2 3 4 5 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4
(a) 1 2 3 4 5 (b) 3 3 3 3 3 (c) 3 3 3 3 3 (d) 3 3 3 3 3
1 2 3 4 5 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2
1 2 3 4 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1

9. Fie un vector cu 100 de elemente de tipul char. Fiecare element reprezint  o liter  din alfabetul latin (de la A la Z).
Pentru ecare element de pe pozit, ia i din vector se calculeaz  o valoare Si care reprezint  câte dintre literele de pe
pozit, iile de la 0 la i − 1 sunt înainte în alfabet.
De exemplu, pentru vectorul S, C, A, U, N , valoarea S4 este 2 deoarece doar literele C s, i A sunt înaintea literei N în
alfabet.
Care dintre funct, iile de mai jos returneaz  corect suma tuturor valorilor Si , cu i de la 0 la 99?
(a) (b)
int f ( int v [ 1 0 0 ] ) int f ( int v [ 1 0 0 ] )
{ {
int sum = 0 ; int sum = 0 ;
int i, j; int i, j;
for ( i = 1 ; i < 100; i = i + 1) for ( i = 0 ; i < 100; i = i + 1)
for ( j = 0 ; j < i ; j = j + 1 ) for ( j = 0 ; j < i ; j = j + 1 )
i f ( v [ j ] − 'A '>v [ i ] − 'A ' ) i f ( v [ j ]<v [ i ] )
sum = sum + 1 ; sum = sum + 1 ;
return sum ; return sum ;
} }
(c) (d)
int f ( int v [ 1 0 0 ] ) int f ( int v [ 1 0 0 ] )
{ {
int sum = 0 ; int sum = 0 ;
int i, j; int i, j;
for ( i = 1 ; i < 100; i = i + 1) for ( i = 1 ; i < 100; i = i + 1)
for ( j = i +1; j < 1 0 0 ; j = j + 1 ) for ( j = 0 ; j < i ; j = j + 1 )
i f ( v [ j ] − 'A '<v [ i ] − 'A ' ) i f ( v [ j ]<v [ i ] )
sum = sum + 1 ; sum = sum + v [ i ] − v [ j ] ;
return sum ; return sum ;
} }

10. Se consider  o matrice M cu n linii ³i m coloane care se completeaz  pe linii cu termenii s, irului lui Fibonacci. Pentru
o astfel de matrice cu m=n=3, care va  valoarea variabilei suma din secvent, a de cod de mai jos?
int suma=0;
for ( i = 0 ; i <m; i ++)
{
suma += M[ 0 ] [ i ] ;
suma += M[ n − 1 ] [ i ] ;
}
for ( i = 1 ; i <n − 1 ; i ++)
{
suma += M[ i ] [ 0 ] ;
suma += M[ i ] [m − 1 ] ;
}

4
(a) 88
(b) 83
(c) 34
(d) 39

11. Fie urm toarea funct, ie ce are ca parametri de intrare un vector de numere întregi s, i un num r natural nenul:
functia f(v, n)
,

h←n
sum ← 0
cât timp h > 0 execut 
pentru i ← 0 la n − 1 execut 
sum ← sum + v[i]
h ← h/2
returneaz  sum
Dac  se apeleaz  funct, ia cu un vector v de 1024 de elemente, toate având valoarea 1, care va  valoarea returnat  de
aceasta?
(a) 1024 (b) 1048576 (c) 10240 (d) 11264

12. Care este complexitatea din punctul de vedere al duratei de execut, ie (complexitatea timp) a funct, iei de mai jos?
int f ( int n ) {
int i , j , x = 0;
for ( i = 1 ; i <= n ; i = i + 1 )
{
for ( j = 1; j < n ; j = j + i )
{
x = x + 1;
}
}
return n;
}

(a) O(n2 ) (b) O(n · log 2 n) (c) O(n · log n) (d) O(2 · n)

13. Considerând c  toate declarat, iile s, i init, ializ rile sunt corecte, care implementare a sort rii cresc toare a unui vector
a de dimensiune n nu este corect ?

5
V1 V2
do { m = n;
k = 0; while (m>0)
for ( i = 0 ; i < n − 1 ; i ++) {
{ for ( i = 0 ; i < m − 1 ; i ++)
if (a [ i ] > a [ i + 1]) if (a [ i ] > a [ i + 1])
{ {
k++; t = a [ i ] ; t = a[ i ];
a[ i ] = a[ i + 1]; a[ i ] = a[ i + 1];
a [ i + 1] = t ; a [ i + 1] = t ;
} }
} m−−;
} while ( k ) ; }

V3
for ( j = 0 ; j < n − 1 ; j ++)
for ( i = 0 ; i < n ; i ++)
if (a [ i ] > a [ i + 1])
{
t = a[ i ];
a [ i ] = a [ i + 1 ] ; a [ i + 1] = t ;
}

(a) T oate variantele sunt corecte (b) V 1 (c) V 3 (d) V 2

14. Secvent, a de pseudocod de mai jos ar trebui s  implementeze algoritmul lui Euclid. A si B sunt numere naturale.
functia Euclid(A, B)
,

cât timp V 1 execut 


C ← A%B
A←B
B←C
returneaz  V 2;
Expresiile corecte pentru secventele V1 s, i V2 sunt:
(a) V 1 : B 6= 0; V 2 : A (b) V 1 : B 6= 0; V 2 : C (c) V 1 : A 6= B; V 2 : A (d) V 1 : A 6= 0; V 2 : B

15. Un instructor de schi are 5 elevi cu în lt, imele de 1.80 m, 1.70 m, 1.64 m, 1.85 m ³i 1.89 m. Schiurile de care dispune
au lungimele urm toare: 1.70 m, 1.75 m, 1.80 m, 1.80 m ³i 1.90 m. Intructorul vrea s  distribuie schiurile astfel încât
suma diferent, elor absolute (în modul) dintre în lt, imea ec rui elev ³i lungimea schiurilor atribuite s  e minim .
Dup  ce a analizat cu atent, ie problema, acesta a început distribut, ia schiurilor. Elevul cu în lµimea de 1.80 m a primit
schiurile de 1.80 m. Ce schiuri va primi elevul cu înalµimea de 1.70 m?
(a) 1.70 m (b) 1.75 m (c) 1.80 m (d) 1.90 m

16. Câte posibilit t, i exist  pentru ca, prin permutarea literelor P ROGRAM , litera O s  e pe penultima pozit, ie?
(a) 240 (b) 120 (c) 720 (d) 360

17. Fie G un graf neorientat cu n noduri. Dac  G este complet, câte lant, uri hamiltoniene cont, ine?
(a) n2 (b) n! (c) n ∗ (n − 1)/2 (d) n

6
18. Fie urm torul graf neorientat.

Pentru câte dintre perechile de noduri (i, j), cu i < j , lant, ul minim de la nodul i la nodul j are lungimea 3?
(a) 5 (b) 4 (c) 0 (d) 6

19. Fie G un graf neorientat cu 10 noduri. Daca G este format din 3 componente conexe, care este num rul maxim de
muchii pe care îl poate cont, ine G?
(a) 28 (b) 12 (c) 32 (d) 40

20. Pe o plac  de dezvoltare hardware trebuie s  se fac  n g uri. Se consider  graful G = (V, E), unde V este mult, imea
celor n g uri ³i E este multimea tuturor perechilor de g uri. Se cunosc distant, ele dintre g uri. Care este traseul cel
mai potrivit pentru a minimiza suma tuturor deplas rilor burghiului de g urit?
(a) circuit eulerian (b) circuit hamiltonian de lungime minim  (c) circuit elementar (d) problema nu are
solut, ie

21. Se consider  un vector V ce cont, ine nodurile unui arbore binar cu urm toarele proprietati: V[1] cont, ine r d cina,
V[0] este neutilizat, vectorul nu cont, ine pozit, ii libere iar valoarea r d cinii ec rui subarbore este mai mare decât
valorile tuturor descendent, ilor. Dac  p rintele este pe pozit, ia i, i s i pot  pe pozit, iile 2*i si 2*i+1. Într-un astfel
de arbore cu N noduri se insereaz  valoarea a cu urm torul algoritm descris în pseudocod, p strând propriet t, ile
enunt, ate.
f iu, parinte si aux sunt indecsi in V N ← N + 1;
V [N ] ← a;
f iu ← N ;
parinte ← N/2;
cât timp parinte >= 1 execut 
dac  V [parinte] < V [f iu] atunci
aux ← V [parinte];
V [parinte] ← V [f iu];
V [f iu] ← aux;
E1;
parinte ← parinte/2;
altfel
E2;

Care sunt expresiile corecte pentru E1 s, i E2?


(a) f iu ← parinte ∗ 2; E2 : f iu ← parinte
(b) f iu ← parinte/2; E2 : parinte ← 0
(c) f iu ← parinte; E2 : parinte ← 0
(d) f iu ← parinte; E2 : parinte ← f iu

7
22. Fie urm toarele declarat, ii:

struct PUNCT { struct CERC {


float x , y; struct PUNCT centru ;
}; float r a z a ;
};

Fie variabila C1 asociat  unui cerc din planul x0y. Cercul este de raz  2 s, i centrul cercului este în punctul de
coordonate (-1, -1). Denit, ia variabile C1 este:
struct CERC C1 ;

Care dintre urm toarele secvent, e de instruct, iuni trebuie folosit  pentru a înc rca corect valorile pentru raz  s, i centrul
cercului în variabila C1?
(a) C1.raza = 2; C1.centru.x = -1; C1.centru.y = -1;
(b) CERC.raza = 2; CERC.PUNCT.x = -1; CERC.PUNCT.y = -1;
(c) C1.CERC.raza = 2; C1.PUNCT.x = -1; C1.PUNCT.y = -1;
(d) C1.raza = 2; C1.x = -1; C1.y = -1;

23. Se consider  urm toarea funct, ie recursiv , denit  incomplet:


int F( long x , int d)
{
if (...)
return d;
else
return F( x , d − 1);
}

Cu ce expresie trebuie înlocuite punctele de suspensie astfel încât, în urma apelului F(x,99), funct, ia s  returneze cel
mai mare divizor de cel mult dou  cifre al num rului natural transmis prin parametrul x.
(a) x%d < 100 (b) x%d==1 (c) x%d==0 (d) x/10==0 && d<100

24. Se consider  urm toarele funct, ii:


int f 2 ( int x ) ;
int f 1 ( int x ) {
i f ( x<=1) return 1 ;
return x * f 2 ( x − 1);
}
int f 2 ( int x ) {
i f ( x<=1) return 1;
return f 1 ( x − 1);
}

Care dintre urm toarele expresii este egal  cu x!, pentru orice x num r natural pozitiv?
(a) f 1(x) (b) f 1(x) · f 2(x) (c) f 2(x) (d) x · f 2(x)

25. S, tiind c  înainte de apel variabila a are valoarea 1 s, i variabila b valoarea 0, ce valoare vor avea variabilele a s, i b dup 
apelul functie(102304,a,b) ?

8
void f u n c t i e ( unsigned long n, unsigned long &a , unsigned long &b )
{
if ( n<10)
i f ( n%10==0)
a=n ;
else
b=n ;
else {
f u n c t i e (n/10 , a , b ) ;
i f ( n%10==0)
a=a *10+n%10;
else
b=b *10+n%10;
}
}

(a) a = 0, b = 102304; (b) a = 100, b = 1234; (c) a = 1, b=1234; (d) a =1234, b=102304.

9
Universitatea Tehnic  "Gheorghe Asachi" din Ias, i
Facultatea de Automatic  s, i Calculatoare *
Admitere  sesiunea iulie 2020
Domeniile: Calculatoare s, i tehnologia informat, iei
Ingineria sistemelor (Automatic  s, i informatic  aplicat )

Subiecte la testul gril  de Informatic 


1. Fie programul de mai jos:
void P r i n t ( int i , int limit )
{
do
{
if ( i++ < l i m i t )
{
cout<<"Queen" ;
continue ;
}
} while ( 0 ) ;
}
int main ( ) {
Print (1 , 4 ) ;
return 0 ;
}

De câte ori va  as, at pe ecran cuvântul Queen?


(a) 3 (b) 1 (c) 4 (d) 0

2. Fie urm toarea secvent,   de cod:


if ( test )
c o u t << "Da" << e n d l ;
else
c o u t << "Nu" << e n d l ;

Care trebuie s  e forma expresiei test, din secvent, a de cod dat , pentru ca, pe monitor s  se as, eze Da numai dac 
valoarea variabilei x este par  s, i strict pozitiv ?
(a) (x % 2 == 0) && (x <= 0)
(b) (x % 2 == 0) || (x > 0)
(c) !((x % 2 != 0) || (x <= 0))
(d) !((x % 2 != 0) && (x <= 0))

3. Se consider  urm toarele funct, ii, cu A s, i B numere naturale:

1
int f 2 ( int A, int B)
{
int f 1 ( int A, int B)
while (A != B)
{
{
if ( ! B)
if (A > B)
A = A − B;
return A; if (B > A)
return f 1 (B, A%B ) ; B = B − A;
}
}
return A;
}

Care dintre cele dou  funct, ii implementeaz  algoritmul lui Euclid?


(a) Numai f 1 (b) Numai f 2 (c) f 1 s, i f 2 (d) Nici f 1 nici f 2

4. Ce se va as, a în urma apelului f (6) a funct, iei de mai jos, dac  a este un vector cu n elemente ce cont, ine valorile
1,2,3,4,5,6,7,8,9,10, date în aceast  ordine? Indicele primului element al vectorului este 1.
functia f(n)
,

pentru i ← 1, n/2 execut 


aux ← a[i]
a[i] ← a[n − i]
a[n − i] ← aux

pentru i ← 1, n execut 
as, eaz  a[i]

(a) 5 4 3 2 1 6 (b) 6 5 4 3 2 1 (c) 9 8 7 6 5 4 3 2 1 10 (d) 10 9 8 7 6 5 4 3 2 1

5. Care este rezultatul apelului funct, iei f de mai jos, dac  tabelul bidimensional transmis ca parametru este matricea
din gur ?
int f ( int a [ 7 ] [ 7 ] ) {
int i , j , c = 0 ;
for ( i = 1 ; i <6; ++i ) 2 0 0 0 0 2 0
for ( j = 1 ; j <6; ++j ) 2 2 1 2 1 2 2
{ 0 1 0 0 0 2 2
int x = ( a [ i ] [ j ]+1)%3; 2 2 0 1 1 1 2
int y = (3+a [ i ] [ j ] − 1)%3; 1 0 1 0 0 2 0
if (x == a [ i ] [ j +1] && x == a [ i ] [ j − 1] && 2 2 2 1 2 1 2
y == a [ i + 1 ] [ j ] && y == a [ i − 1 ] [ j ] ) 1 0 1 0 1 2 1
c = c + 1;
}
return c;
}
(a) 5 (b) 2 (c) 3 (d) 4

6. Care este valoarea întoars  de funct, ie s, i ce se as, eaz  dup  apelul functie(10) ?
int f u n c t i e ( int n )
{
if (n < 1)
c o u t << n << e n d l ;
else {
c o u t << n << " " ;

2
return n + f u n c t i e ( n − 1);
c o u t << n << " " ;
}
return 1;
}

(a) Valoarea întoars  de funct, ie este 112 s, i se as, eaz :


1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1 0
(b) Valoarea întoars  de funct, ie este 110 s, i se as, eaz :
10 9 8 7 6 5 4 3 2 1 0
1 2 3 4 5 6 7 8 9 10
(c) Valoarea întoars  de funct, ie este 55 s, i se as, eaz :
10 9 8 7 6 5 4 3 2 1
(d) Valoarea întoars  de funct, ie este 56 s, i se as, eaz :
10 9 8 7 6 5 4 3 2 1 0

7. Urm toarea instruct, iune as, eaz  pe ecran:


int a [ 4 ] = {1};
for ( int k = 0 ; k <= 3 ; k++)
c o u t << a [ k ] << " " ;

(a) 0 0 0 0 (b) 1 0 0 0 (c) 1 1 1 1 (d) eroare la compilare

8. Se d  un labirint sub forma unei matrice p tratice cu n linii s, i n coloane, în care locat, iile accesibile sunt notate cu
0 iar locat, iile inaccesibile (zidurile labirintului) cu 1. Coordonatele locat, iilor la care se a  recompensele sunt (3, 3),
(1, 4) s, i (3, 1). Dându-se harta labirintului de mai jos, s  se determine lungimea minim  a unui drum care pleac  din
pozit, ia (1, 1), trece obligatoriu prin locat, iile la care se a  recompensele (nu conteaz  în ce ordine) s, i apoi ajunge în
pozit, ia (n, n). Un pas din drum const  din deplasarea dintr-un punct (i, j) într-unul din cele patru învecinate pe linie
s, i coloan , adic  într-unul din punctele (i − 1, j), (i, j − 1), (i + 1, j), (i, j + 1). Deplasarea se face doar prin locat, iile
accesibile (notate cu 0).

0 0 0 0
1 0 1 1
0 0 0 1
1 0 0 0

(a) 15 (b) 11 (c) 10 (d) 12

9. Se d  o matrice cu n linii s, i n coloane care cont, ine init, ial numai valori de 0. Se denesc trei tipuri de operat, ii care
pot  executate asupra acesteia: ADD(X,Y,Z) - la valoarea existent  pe pozit, ia (X,Y) în matrice adun  valoarea
Z; UNDO(X) - elimin  ultimele X operat, ii de UNDO s, i/sau ADD s, i SUM(X,Y) - determin  suma elementelor
din submatricea determinat  de colt, ul din stânga sus (1, 1) s, i colt, ul dreapta jos (X,Y). Dându-se n = 5 s, i seria de
operat, ii de mai jos, determinat, i r spunsul pentru ecare operat, ie de tip SUM(X,Y).
ADD(1,1,8), ADD(2,3,10), SUM(1,3), ADD(3,2,6), ADD(2,2,4), SUM(3,2), UNDO(2), ADD(1,1,7), SUM(5,5),
UNDO(3), SUM(4,4)
(a) 8, 18, 25, 24 (b) 8, 18, 25, 0 (c) 18, 18, 25, 0 (d) 8, 28, 25, 24

10. Se implementeaz  un algoritm care caut  secvent, a de sum  maxim  dintr-un vector de numere întregi s, i calculeaz 
valoarea acestei sume. De exemplu, pentru un vector cu valorile 2, 3, -6, 4, 6, 8, 11, -9, 1, 2 secvent, a de sum  maxim 
este 4, 6, 8, 11 iar suma maxim  este 29. Algoritmul parcurge vectorul s, i la ecare pas veric  semnul secvent, ei curente
(sc), modic  corespunz tor valoarea sc s, i indexul de inceput al secvent, ei curente (pc) si actualizeaz  secvent, a de
suma maxim  (smax) cu p strarea indicilor de inceput (p) s, i sfârs, it (u) ai secvent, ei.

3
int smax = a [ 0 ] , s c = a [ 0 ] ;
int p = 0 , u = 0 , pc = 0 ;
for ( i = 1 ; i <= N; i ++)
{
i f ( s c > 0 ) s c += a [ i ] ;
else
{
S;
}
if ( s c > smax )
{
p = pc ; u = i ; smax = s c ;
}
}

Care sunt instruct, iunile aferente secvent, ei S?


(a) sc = smax + a[i]; pc = i;
(b) sc = smax + a[i]; pc = i + 1;
(c) sc = a[i]; pc = i;
(d) sc = a[i − 1]; pc = pc + +;

11. Fie urm toarea funct, ie C++ care returneaz  1 dac  num rul dat ca parametru este prim, respectiv 0 dac  nu este
prim.
int i s P r i m e ( int n ) {
for ( int i =2; i<=X; i ++) {
i f ( ! ( n%i ) ) {
return 0 ;
}
}
return 1;
}

Care este valoarea minim  pe care o poate lua X astfel încât funct, ia s  returneze rezultate corecte pentru n oricât de
mare, unde n > 1?
(a) (int)(n/2) (b) n (c) log(n) (d) (int)(sqrt(n))

12. Fie urm toarea funct, ie ce are ca parametri de intrare un vector de numere întregi s, i un numar natural nenul:
functia f(v, n)
,

h := n
sum := 0
cât timp h > 0 execut 
pentru i := 0 la n − 1 execut 
sum := sum + v[i]
h := h/2
returneaz  sum
Care este ordinul de complexitate al functiei f?
(a) O(N ) (b) O(N 2 ) (c) O(N logN ) (d) O(logN )

4
13. Se dores, te c utarea valorii 70 în vectorul de elemente: -6, 0, 4, 7, 11, 13, 22, 23, 40, 44, 47, 66, 68, 70, 71.
Câte operat, ii de comparat, ie între valoarea 70 s, i elemente din vector se realizeaz  în urma aplic rii algoritmului de
c utare binar ?
(a) 12 (b) 3 (c) 2 (d) 4

14. Se consider  problema urm toare: dat  ind S = {1, 2, 3, 4} mult, imea a 4 regine ³i o tabl  de tip ³ah (4 linii si 4
coloane, numerotate de la 1 la 4), s  se plaseze cele 4 regine astfel înc t s  nu existe dou  regine pe aceea³i linie,
coloan  sau diagonal . Problema este rezolvat  prin metoda backtracking. Plasarea unei regine i se face pe linia i,
prin testarea de la stânga la dreapta a pozit, iilor acceptabile. Se presupune c  reginele 1 si 2 sunt plasate ca în gura
de mai jos.

1
2

Se încearc  plasare reginei 3. Care dointre gurile de mai jos este gura care reprezint  urm toare operat, ie ce trebuie
efectuat ?
1 1 1 1
2 2 2 2
(a) (b) (c) (d)
3

15. Între cele n elemente ale unui vector se g sesc k elemente ce sunt considerate necorespunz toare. Un element aat
pe pozit, ia i este considerat necorespunz tor dac  atât suma elementelor de pe pozit, iile 1, 2, ..., i − 1, cât s, i suma
elementelor de pe pozit, iile i + 1, ..., n este mai mic  decât elementul de pe pozit, ia i. Mihai încearc  s  implementeze
un algoritm ecient care s  rezolve aceast  problem . Indicat, i ordinul de complexitate al celui mai bun algoritm pe
care îl poate g si Mihai.
(a) O(1) (b) O(n) (c) O(log2 N ) (d) O(n2 )

16. Mihai are un num r de sarcini care trebuie duse la îndeplinire. Fiecare sarcin  poate s  depind  de alte sarcini, care
depind la rândul lor de altele, etc. De exemplu, înainte de a se apuca de vopsit în cas , trebuie s  cumpere vopsea s, i
pensul .
Fie N num rul total de sarcini s, i sarcinile S1, S2, ..., Sn. Relat, iile de dependent,   sunt reprezentate prin intermediul
matricei M, unde, dac  M[i,j]=1, atunci sarcina Si trebuie îndeplinit  înaintea sarcinii Sj. De exemplu, sarcina S4
trebuie îndeplinit  înaintea sarcinii S1.

S1 S2 S3 S4 S5 S6 S7 S8
S1 0 0 0 0 0 1 0 0
S2 0 0 1 1 0 0 0 0
S3 0 0 0 0 0 1 0 0
S4 1 0 0 0 0 0 0 0
S5 0 0 0 0 0 0 0 1
S6 0 0 0 0 0 0 0 0
S7 0 1 0 0 0 0 0 0
S8 0 0 0 1 0 0 0 0

Care este o ordine corect  de îndeplinire a sarcinilor t, inând cont de dependent, ele reprezentate în matricea de mai
sus?
(a) 6, 1, 3, 4, 2, 7, 8, 5 (b) 5, 7, 2, 3, 8, 4, 1, 6 (c) 1, 6, 2, 3, 4, 5, 7, 8, 6 (d) 6, 1, 2, 3, 4, 8, 5, 7

5
17. Se consider  un graf G cu n vârfuri s, i m muchii format din k componente conexe. Câte muchii din graful G trebuie
eleminate pentru a transforma componentele conexe în arbori part, iali (un arbore part, ial se obt, ine prin eliminarea
unor muchii din graf)?
(a) m − n + k (b) n − k (c) m − k (d) k

18. Fie D = (V, A) un digraf cu n. Un vârf i se numes, te groap  dac  pentru orice alt vârf j 6= i exist  un arc (j, i) ∈ A s, i
nu exist  un arc (i, j) ∈ A. Care este num rul maxim de gropi ce pot exista într-un digraf?
(a) n (b) 1 (c) n − 1 (d) 0

19. Fie T un arbore binar cu n noduri dintre care f sunt frunze. Un nod complet este un nod care are doi i. Cate
noduri complete poate avea arborele T ?
(a) f − 1 (b) n − f + 1 (c) f /2 − 1 (d) n − f /2 + 1

20. Numerele rat, ionale pozitive sunt acele numere care sunt egale cu m/n, cu m s, i n numere naturale, prime între ele,
6 32000. Exist  un mod foarte interesant de a obt, ine toate numerele rat, ionale: pentru început se consider  dou 
numere: 0/1 adic  0 s, i 1/0 adic  un fel de inf init. Pornind de la acestea putem obt, ine un nou s, ir de numere
rat, ionale combinând dou  numere consecutive. Se aleg cele 2 numere. Fie ele de tipul a/b s, i c/d. Noul rezultat
este (a + c)/(b + d) s, i se pune între cele 2. De exemplu primului s, ir îi urmeaz : 1/1 adic  (0 + 1)/(1 + 0), mai apoi
1/2 adic  (0 + 1)/(1 + 1) s, i 2/1 adic  (1 + 1)/(1 + 0), s, amd. Prin acest procedeu se poate genera o ret, ea de noduri
organizat  pe mai multe niveluri:
- pe nivelul 0: 0/1 s, i 1/0
- pe nivelul 1: 1/1
- pe nivelul 2:1/2 s, i 2/1
...
Pentru ret, eaua obt, inut  urmând procedeul de mai sus, se aplic  urm toarea codicare, pentru oricare dou  noduri
situate pe niveluri consecutive X s, i Y: dac  valoarea din nodul Y este mai mic  decât valoarea din nodul X, atunci
S
drumul de la nodul X c tre nodul Y se codic  cu , în caz contrar drumul între cele dou  noduri se codic  cu . D
Indicat, i traseul str b tut în ret, ea pentru a ajunge la fract, ia m/n, pornind din vârful 1/1. Spre exemplu: pentru a
ajunge la fract, ia 3/1 drumul codicat este: D, D.
(a) DSS (b) DSD (c) DDD (d) SDD

21. Fie un graf neorientat cu s, ase vârfuri, în care ecare vârf are asociat câte un vector de elemente întregi. Dou  vârfuri
au muchie între ele dac  exist  m car o valoare comun  în vectorii asociat, i vârfurilor respective. Fiecare muchie are
o pondere egal  cu maximul valorilor comune. Dac  nu exist  muchie între dou  vârfuri, atunci se consider  c  are
ponderea innit.
Vectorii pentru ecare vârf sunt: (4, 5, 6), (2, 3, 4), (3, 4, 5), (1, 2, 3), (5, 6, 7), (1, 4, 7).
Care este maximul lungimilor minime dintre oricare dou  vârfuri din graful respectiv?
(a) 7 (b) innit (c) 6 (d) 8

22. Se consider  urm toarea funct, ie recursiv  fun(x,y). Care este rezultatul apelului fun(4, 3)?
int fun ( int x , int y)
{
i f ( x == 0 ) return y ;
return fun ( x − 1 , x + y);
}

(a) 12 (b) 13 (c) 9 (d) 10

6
23. Se consider  urm toarea funct, ie recursiv :
int f o o ( int n , int r)
{
if (n > 0)
return ( n%r + f o o ( n/ r , r ) ) ;
else
return 0;
}

Ce valoare se obt, ine la apelul foo(345, 10) ?


(a) 345 (b) 12 (c) 10 (d) 5

24. De câte ori va ap rea pe ecran semnul # dup  apelul functie(4) ?


void f u n c t i e ( int n )
{
cout<<"#" ;
i f ( n !=0)
{
cout<<n<<" " ;
for ( int j =0; j <n ; j ++)
cout<<j ;
cout<<e n d l ;
f u n c t i e ( n − 1);
cout<<"#" ;
}
else cout<<"#" ;
}

(a) De 3 ori; (b) De 14 ori; (c) De 10 ori; (d) De 12 ori.

25. Un singur vector de dimensiune MAXSIZE este utilizat pentru stocarea a dou  stive. Cele dou  stive îs, i modic 
pozit, iile vârfurilor (dimensiunile) pornind de la cele dou  capete ale vectorului. Variabilele top1 si top2 (top1<top2)
indic  pozit, iile din vârfurile stivelor. Pentru o utilizare ecient  a spat, iului de memorie, condit, ia de stiv  plin  este:
(a) (top1 = M AXSIZE/2) s, i (top2 = M AXSIZE/2 + 1)
(b) top1 = top2 − 1
(c) top1 + top2 = MAXSIZE
(d) (top1= MAXSIZE/2) sau (top2 = MAXSIZE)

7
Universitatea Tehnic  "Gheorghe Asachi" din Ias, i

Facultatea de Automatic  s, i Calculatoare *


Admitere  sesiunea iulie 2021
Domeniile: Calculatoare s, i tehnologia informat, iei
Ingineria sistemelor (Automatic  s, i informatic  aplicat )

Subiecte la testul gril  de Informatic 


1. Ce se va as, a în urma execut rii urm toarei secvent, e de instruct, iuni:

char s i r [ ] = " admitere " ;


for ( int i = 1; i <= 3 ; i ++)
{
strcpy ( s i r + 1, sir + 2);
}

c o u t << sir ;

(a) ere (b) dmi (c) aere (d) atere

2. Fie urm toarele declarat, ii de structuri:

struct p u n c t {
int x , y ;
};
struct _ e l e m e n t {
char nume [ 1 0 ] ;
punct pct ;
} element [ 5 ] ;

Care dintre declarat, iile de mai jos sunt gres, ite?

1. struct punct ;
2. struct _element elem ;
3. _element el ;
4. element x;

(a) 1 (b) 2 s, i 3 (c) 1 s, i 4 (d) toate sunt corecte

3. S
, tiind c  x s
, i y sunt variabile întregi, determinat
, i valoarea init
, ial  a variabilei x astfel încât secvent
, a dat  s  as
, eze

exact un asterisc (*).

y ← x;
cât timp x <= 3 execut 
scrie0 ∗0 ;
y ← y + 1;
x ← x + y;

(a) 1 (b) 0 (c) 2 (d) −1

4. Mihaela vrea s  învet, e operat, iile elementare cu matrice. Ast zi va scrie un program pentru a calcula transpusa unei
matrice. Ea scrie urm toarea secvent,   de cod:

1
int a [ ] [ 3 ] = { { 1 , 1 , 1 } , { 2 , 2 , 2 } , { 3 , 3 , 3 } } , n =3;
int i , j ;
for ( i =0; i <n ; i ++)
for ( j =0; j <n ; j ++)
a [ i ] [ j ]= a [ j ] [ i ] ;
for ( i =0; i <n ; i ++){
for ( j =0; j <n ; j ++)
c o u t <<a [ i ] [ j ]<< ' ' ;

La execut, ia codului se va as, a:

(a) Nu se ajunge la execut, ia codului, avem eroare la compilare; nu as, a se declar  o matrice.

(b) 1 2 3 1 2 3 1 2 3

(c) 1 1 1 2 2 2 3 3 3

(d) 1 2 3 2 2 3 3 3 3

5. Ce valoare poate s  ia variabila x pentru ca urm toarea secvent,   de cod s  as, eze valoarea 4?

j = 0;
while ( j < 3)
{
x = x * 5;
if ( x % 1 0 == 0 )
{
x = 3;
}
if ( x % 3 == 0 )
{
x = 1;
}
else
{
x = 4;
}
j ++;
}

c o u t << x ;

(a) 1 (b) 2 (c) 3 (d) nici una din variantele precedente

6. Fie urm toarele structuri:

struct candidat
{
char nume [ 2 0 ] ;
int n o t a ;
};

struct examen
{
candidat c [20];
char sesiune [ 2 0 ] ;
} admitere2021 ;

2
S
, tiind ca sunt 20 de candidat
, i, care dintre secvent
, ele de cod de mai jos as
, eaz  numele candidat
, ilor cu nota >=5?]

(a)
for ( i = 0; i < 20; i ++)
if ( admitere2021 . c [ i ] . nota >=5)
c o u t << a d m i t e r e 2 0 2 1 . c [ i ] . nume ;

(b)
for ( i = 0; i < 20; i ++)
if ( admitere2021 . c . nota >=5)
c o u t << a d m i t e r e 2 0 2 1 . c . nume ;

(c)
for ( i = 0; i < 20; i ++)
if ( admitere2021 [ i ] . c . nota >=5)
c o u t << a d m i t e r e 2 0 2 1 [ i ] . c . nume ;

(d)
for ( i = 0; i < 20; i ++)
if ( admitere2021 . candidat [ i ] . nota >=5)
c o u t << a d m i t e r e 2 0 2 1 . c a n d i d a t [ i ] . nume ;

7. Un hacker scrie un virus cibernetic care acµioneaz  doar asupra informaµiei de tip text de pe ecran. În mod text,
ecranul este constituit din n linii, pe ecare linie aându-se câte m caractere. Caracterele sunt stocate în memoria
calculatorului printr-un s, ir de 8 cifre binare, s, ir care reprezint  codul lor ASCII reprezentat în binar. Cifrele binare
sunt numerotate de la 0 la 7 de la dreapta c tre stânga, cea din stânga ind cea mai semnicativ  cifr  binar . La
ecare secund , virusul transform  simultan toate caracterele de pe ecran dup  urm toarele reguli: 1. se determin 
caracterele ale c ror coduri au num rul maxim de cifre binare egale cu 1 de pe intregul ecran; pentru ecare astfel de
caracter cele mai semnicative 2 cifre binare consecutiv egale cu 1 din cod se transform  în 0, indiferent de pozitia
lor în numar, iar dac  nu are în cod 2 cifre binare consecutive egale cu 1, num rul nu se modic ; 2. pentru toate
celelalte caractere, cifra binar  cea mai puµin semnicativ  (ultima pozitie) egal  cu 0 al codului se transform  în 1;

S
, tiind c  pe un ecran de 3X3 este as
, at textul de mai jos, s  se determine câte cifre binare vor  modicate dupa o

secunda

Ana
are
apa

Coduri ascii : 'A ' = 65; ' n '= 110; 'r ' = 114; 'e ' = 101; 'a ' = 97; ' p ' = 112

(a) 10 (b) 4 (c) 2 (d) 16

8. Fie s un s, ir de caractere init, ializat cu urm toarele valori: '4', '3', '1', '2'. Care sunt valorile caracterelor s, irului de
caractere dup  executarea secvent, ei de instruct, iuni de mai jos?

if ( s [ 0 ] >= s [ 3 ] )
s [1] = =;
else
++s [ 2 ] ;

(a) '4', '3', '1', '2'

(b) '3', '3', '2', '2'

(c) '4', '3', '2', '2'

(d) '4', '2', '1', '2'

3
9. Fie matricea mat cu 4 linii s, i 5 coloane (elementul de pe prima linie s, i prima coloan  cu indecs, ii 0, 0) s, i urm toarea
secvent,   de cod:

rez = 0;

for ( i = 0; i < 4; i ++)


for ( j = 0; j < 5; j ++)
if ( j == 4 )
r e z = r e z + mat [ i ] [ j ] ;

Care dintre variantele urm toare are acelas, i rezultat cu codul de mai sus?

(a)
rez = 0;
for ( i = 0; i < 4; i ++)
r e z = r e z + mat [ i ][4];

(b)
rez = 0;
for ( i = 0; i < 4; i ++)
r e z = r e z + mat [4][ i ];

(c)
rez = 0;
for ( i = 0; i < 5; i ++)
r e z = r e z + mat [ i ][5];

(d)
nici unul din codurile furnizate

10. Un teren T este împ rt, it în parcele identice de form  p trat . Num rul de parcele rezultat este n x m, unde n este
num rul de parcele pe lungime s, i m este num rul de parcele pe l t, imea terenului. Pe ecare parcel  s-au efectuat
lucr ri în valoare de T[i][j] EUR. Care este semnicat, ia valorii calculate s, i returnate de urm toarea funct, ie? Se
presupune c  a<b.

int fun2 ( int a, int b) {


int i , j = 0, r e t = m* n ;
for ( i = 0; i < n; i ++)
for ( j = 0; j < m; j ++)
if (T [ i ] [ j ] >= a && T [ i ] [ j ] <= b )
ret = ret = 1;
return ret ;
}

(a) Num rul de parcele cu valoarea lucr rilor cuprins  în intervalul (a, b)

(b) Num rul de parcele cu valoarea lucr rilor cuprins  înafara intervalului (a, b)

(c) Num rul de parcele cu valoarea lucr rilor cuprins  înafara intervalului [a, b]

(d) Num rul de parcele cu valoarea lucr rilor cuprins  în intervalul [a, b]

11. Fie matricea m cu 5 linii s, i 5 coloane, cu elementul de pe prima linie s, i prima coloan  aat pe pozit, ia 0, 0:

1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

Cum se va transforma matricea m dup  execut, ia urm torului cod?

4
for ( i = 0; i < 5; i ++)
m[ i ] [ i ] = m [ ( i +1)%5][( i +1)%5];

2 2 3 4 5 2 2 3 4 5 1 1 3 4 5 2 3 4 5 1
1 3 3 4 5 1 3 3 4 5 1 2 2 4 5 2 3 4 5 1
(a) 1 2 4 4 5 (b) 1 2 4 4 5 (c) 1 2 3 3 5 (d) 2 3 4 5 1
1 2 3 5 5 1 2 3 5 5 1 2 3 4 4 2 3 4 5 1
1 2 3 4 2 1 2 3 4 1 1 2 3 4 1 2 3 4 5 1

12. Dac  avem dou  matrice cu dimensiunile An×k ³i Bk×m , câte linii va avea matricea C în care ecare linie este obµinut 
prin concatenarea a dou  linii li ³i lj , unde li ∈ A ³i lj ∈ B ?
(a) nkm (b) nm (c) nk (d) n

13. Fie dou  mult, imi de numere, A s, i B, formate ecare din valorile de la 1 la n (n este par). Consider m faptul c 
mult, imea C este reprezentat  de produsul cartezian al mult, imilor A s, i B, adic  C = {(a, b)|a ∈ A, b ∈ B}. Dac  n
este egal cu 24, câte elemente (perechi ordonate) din mult, imea C satisfac condit, ia urm toare?

( a + b ) % 2 == 0 && ( a * b ) % 2 == 0

(a) 143 (b) 286 (c) 144 (d) 288

14. Se d  mult, imea A = {i, l, m, n, o}. Utilizând algoritmul backtracking se genereaz  în ordine alfabetic  cuvinte de
câte patru litere din mult, imea A, cuvintele generate nu trebuie s  cont, in  dou  vocale al turate. Primele opt cuvinte
generate sunt: ilil, ilim, ilin, illi, illl, illm, illn, illo . Câte dintre cuvintele generate încep cu litera l ³i se termin  cu
litera o?
(a) 9
(b) 15
(c) 12
(d) 20

15. Care dintre urm torii algoritmi nu compar  aceea³i pereche de valori din datele de intrare de dou  ori?

(a) Interclasarea a dou  secvenµe. (b) Sortarea prin metoda bulelor. (c) Sortarea prin selecµie. (d) Niciunul
dintre algoritmii menµionaµi.

16. Câte cuvinte diferinte, de lungime m, pot  scrise folosind un alfabet care are k litere?
k m m! k!
(a) m (b) k (c)
(k−m)!k! (d)
(m−k)!m!

17. Se consider  o mult, ime A format  din n elemente s, i o mult, ime B , format  din m elemente, m > n. Num rul funct, iilor
injective denite pe A cu valori înB este egal cu:
(a) num rul aranjamentelor de m elemente luate câte n (b) num rul aranjamentelor de n elemente luate câte m
(c) num rul combin rilor de m elemente luate câte n (d) num rul combin rilor de n elemente luate câte m

18. Pe planeta X num rul de ore din zi (n) s, i num rul de minute dintr-o or  (m) difer  fat  de planeta P mânt. În
schimb, durata unei ore în minute este aceeas, i ca durata unui minut în secunde. Astfel, s-a decis crearea unui ceas
mecanic mai special. Ceasurile au orar, minutar s, i secundar, o rotat, ie complet  a acului care indic  ora reprezint  o
jum tate de zi, iar deplasarea acelor se realizeaz  la fel ca la ceasurile obis, nuite.

Se dores, te s  se ae de câte ori se suprapun exact cele trei ace în decursul unei zile pe planeta X.

De exemplu, dac  ziua are 24 de ore, iar ora are 60 de minute, atunci în decursul unei zile singurele momente când
cele trei ace se suprapun sunt la ora 0 s, i la ora 12.

Ce ar trebui s  se completeze în locul punctelor (...) astfel încât funct, ia f s  returneze num rul de suprapuneri?

5
int f( int n, int m) {
n = n / 2;
double v1 = ( double ) n / ( n = 1 ) ;
double v2 = 1 . 0 / (m = 1 ) ;
double z 1 = 0 , z 2 = 0 ;
int k3 ;
for ( int k1 = 0 ; k1 < n ; ++k1 ) {
z 1 += v1 ;
double k2 = z 1 / v2 ;
k3 = ( int ) k2 ;
if ( k2 == k3 ) {
z2 = z1 ;
break ;
}
}
return ...;
}

(a) (2 ∗ m)/(k3 ∗ (n/2 − 1))


(b) 2 ∗ n/z2
(c) z2 ∗ (((int)k3) + 1)/(n ∗ z2)
(d) 2 ∗ z2/n

19. Numerele 4, 5, 2, 3, 5, 3, 4, 2, reprezint  gradele vârfurilor unui graf neorientat cu 8 noduri. Num rul de muchii
al grafului este::

(a) 8 (b) 9 (c) 14 (d) 28

20. Un graf cu 16 noduri (numerotate de la 1 la 16) are urm toarea proprietate: dou  noduri i s, i j sunt adiacente dac 
s, i numai dac  i MOD 2 = j MOD 2. Câte componente conexe are acest graf ?

(a) 16 (b) 1 (c) 8 (d) 2

21. Fie G un graf neorientat cu n noduri. Fiecare nod are un atribuit un identicator 1, 2, ..., n. În graf exist  muchii:

ˆ între oricare dou  noduri cu identicatori pari

ˆ între oricare dou  noduri cu identicatori impari

ˆ între oricare dou  noduri cu identicatori de forma 2k , respectiv 2k + 1


Dac  n este par, care este num rul minim de muchii care ar trebui t iate pentru a obt, ine dou  componente conexe?
n n n
(a)
4 (b)
2 (c)
2 −1 (d) n

22. Fie G = (V, A) un graf complet cu n vârfuri. Cum trebuie s  e n pentru ca graful G s  cont, in  un ciclu care cont, ine
toate muchille s, i nicio muchie nu se repet ?

(a) impar s, i n>2 (b) par s, i n>2 (c) n>2 (d) n = 2k , k ≥ 2

23. În cadrul unui departament HR exist  o singur  imprimant  care deserves, te tot, i angajat, ii acelui departament. Întru-
cât imprimanta nu poate printa mai multe documente în acelas, i timp, departamentul IT a propus urm toarea solut, ie:
toate documentele trimise c tre printat se vor stoca într-un tablou în ordinea primirii comenzii de printare, apoi
ecare document va  preluat din tablou s, i printat. Pentru implementarea acestei solut, ii se utilizeaz  dou  comenzi:
ADD(document) - comanda se execut  atunci când unul din angajat, i dores, te printarea unui document s, i EXT RACT
- comanda se execut  atunci când imprimanta nalizeaz  printarea documentului curent s, i trece la urm torul do-
cument din tablou. T
, inând cont c  urm toarele operat
, ii s-au realizat exact în aceast  ordine: ADD(document2),

6
ADD(document11), ADD(document3), EXTRACT, EXTRACT, ADD(document4), ADD(document8), ADD(document3),
EXTRACT, EXTRACT, EXTRACT, EXTRACT, ADD(document7), ADD(document5), ADD(document9), EX-
TRACT, EXTRACT, ADD(document10). Care este urm torul document ce va  printat:

(a) document9 (b) document10 (c) document2 (d) document3

24. Care este valoarea returnat  dup  apelul urm toarei funct, ii recursive? La apelul init, ial al funct, iei, s, irul de caractere
folosit pentru primul argument (s) este: admitere2021ac s, i al doilea argument (i) are valoarea 13.

int fun ( char s [] , int i ) {


if ( i > = 1)
if ( s [ i ] >= 'A ' )

return 1 + fun ( s , i =1);


else
return fun ( s , i =1);
else
return 0;
}

(a) 11 (b) 9 (c) 10 (d) 12

25. Ionic  a scris codul de mai jos:

void f( int n, int& m)


{
if ( n!=0)
{
if ( n%10>m) {m=n %10; c o u t <<m<< ' ' ;}

f ( n / 1 0 ,m) ;
c o u t <<m<< ' ' ;

}
}

int main ( )
{
int m=1 , n = 1 2 3 2 1 ;
f ( n ,m) ;
return 0;
}

Ajuta-l pe Ionic  s  îs, i dea seama ce se va as, a în urma rul rii codului scris de el:

(a) 1 2 3 2 1 (b) 1 2 3 2 1 1 2 3 2 1 (c) 2 3 3 3 3 3 3 (d) 2 3 1 2 3 2 1

7
Universitatea Tehnic  "Gheorghe Asachi" din Ias, i

Facultatea de Automatic  s, i Calculatoare *


Admitere  sesiunea iulie 2021
Domeniile: Calculatoare s, i tehnologia informat, iei
Ingineria sistemelor (Automatic  s, i informatic  aplicat )

Subiecte la testul gril  de Informatic 


1. Fie urm toarele structuri:

struct candidat
{
char nume [ 2 0 ] ;
int n o t a ;
};

struct examen
{
candidat c [20];
char sesiune [ 2 0 ] ;
} admitere2021 ;

S
, tiind ca sunt 20 de candidat
, i, care din secvent
, ele de cod de mai jos as
, eaz  nota student
, ilor al c ror nume începe

cu litera A?

(a)
for ( i = 0; i < 20; i ++)
if ( a d m i t e r e 2 0 2 1 . c [ i ] . nume [ 0 ] == 'A ' )

c o u t << a d m i t e r e 2 0 2 1 . c [ i ] . n o t a ;

(b)
for ( i = 0; i < 20; i ++)
if ( a d m i t e r e 2 0 2 1 . nume [ 0 ] == 'A ' )

c o u t << a d m i t e r e 2 0 2 1 . c [ i ] . n o t a ;

(c)
for ( i = 0; i < 20; i ++)
if ( a d m i t e r e 2 0 2 1 . c [ i ] . nume == 'A ' )

c o u t << a d m i t e r e 2 0 2 1 . c [ i ] . n o t a ;

(d)
for ( i = 0; i < 20; i ++)
if ( a d m i t e r e 2 0 2 1 . c a n d i d a t [ i ] . nume [ 0 ] == 'A ' )

c o u t << a d m i t e r e 2 0 2 1 . c a n d i d a t [ i ] . n o t a ;

2. Care este rezultatul execut, iei urm torului program?

int function1 ( int ) ;


int main ( )
{
int k =30;
k = f u n c t i o n 1 ( k=f u n c t i o n 1 ( k=f u n c t i o n 1 ( k ) ) ) ;
c o u t << " k = " << k << e n d l ;

1
return 0;
}
int function1 ( int k)
{
k++;
return k;
}

(a) k = 30; (b) k = 31; (c) k = 32; (d) k = 33.

3. S
, tiind c  variabilele x ³i y sunt de tip întreg, care dintre expresiile de mai jos are valoarea 1 dac  ³i numai dac 

valorile nenule ale variabilelor x ³i y sunt egale?

(a) (x<=y) && (y<x)

(b) (x%y==0) && (y%x==0) && (x*y>0)

(c) x*x==y*y

(d) (x<=y) || (y<=x)

4. Fie urm torul cod:

char text [ ] = " A d m i t e r e AC" ;

for ( i = 0; i < strlen ( text ) = 1; i ++)


text [ i + 1] = text [ i ] ;

c o u t << t e x t ;

Ce se va as, a pe ecran?

(a) AAAAAAAAAAA (b) AAdmitere A (c) AAdmitere AC (d) CAdmitere A

5. Se consider  o matrice M cu 7 linii care cont, ine doar elemente de 0 s, i X. Matricea se completeaza astfel:

ˆ prima linie cont


, ine un singur element X;

ˆ linia i cont
, ine de dou  ori mai multe elemente X decât linia i-1, pentru i ∈ {2, 3, 4, 5, 6, 7}
ˆ ultima linie contine un singur element O.

Câte elemente de O sunt în matrice?

(a) 127 (b) 328 (c) 455 (d) 256

6. Se consider  o matrice p tratic  M de dimensiune n x n, cu n ∈ [3, 100] s, i funct, ia f (M, n, i, j) care pune caracterul
'*' pe anumite pozitii din matrice. Parametrii i s, i j sunt numere naturale în intervalul [1, n], iar DIV din codul de
mai jos reprezint  câtul împ rt, irii.

functia f(M,n,i,j )
dac  i <= n DIV 2 atunci
,

dac  j <= n-1 atunci


M [i][j] ←0 ∗0 ;
f(M, n, i, j + 1);
altfel
f(M, n, i + 1, i + 2)

De câte ori se autoapeleaz  f dac  n=7, i=2 s, i j=4?

(a) de o innitate de ori (b) de 5 ori (c) de 4 ori (d) de 7 ori

2
7. Fie matricea m cu 5 linii s, i 5 coloane, cu elementul de pe prima linie s, i prima coloan  aat pe pozit, ia 0, 0 s, i un vector
v cu 5 elemente int, ializate cu 0, cu indexul primului element 0:

1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

Cum va ar ta vectorul v dup  rularea codului urm tor?

for ( i = 0; i < 5; i ++)


for (j = i ; j < 5; j ++)
v[ i ] = v[ i ] + m[ i ] [ j ] ;

(a) 15 14 12 9 5 (b) 14 12 9 5 0 (c) 1 3 6 10 15 (d) 15 15 15 15 15

8. Ce se va as, a la rularea codului urm tor:

char text [ ] = " A d m i t e r e AC" ;

for ( i = 0; i < strlen ( text ) ; i ++)


if ( text [ i ] > 'A ' && t e x t [ i ] < 'Z ' )

text [ i ] = text [ i ] = 'A ' + 'a ' ;

c o u t << t e x t ;

(a) Admitere Ac (b) admitere ac (c) ADMITERE AC (d) aDMITERE ac

9. Fie un robot care trebuie s  se deplaseze printr-un labirint, de la punctul de start S la punctul de nal F (vezi gura).

Robotul poate efectua urm toarele act, iuni: deplasareInainte(), rotireDreapta() s, i rotireStanga(). La act, iunea de
deplasare înainte, robotul se deplaseaz  cu un p tr t, el în direct, ia spre care este îndreptat. Cele dou  tipuri de rotiri
sunt de 90 de grade, iar robotul nu se deplaseaz .

Fie urm torul pseudocod:

functia f()
,
F
pentru i ← 1 la 5 execut 
[act, iunea 1]
dac  i este impar atunci
[act, iunea 2]
altfel
[act, iunea 3]

[act, iunea 4]
S
[act, iunea 5]

În condit, iile în care robotul este init, ial orientat în sus, ce trebuie de completat în locurile [act, iunea 1], [act, iunea 2],
[act, iunea 3], [act, iunea 4] s, i [act, iunea 5] astfel încât, în urma execut, iei pseudocodului de mai sus, robotul s  ajung 
la nalul labirintului din gur .

(a) deplasareInainte(), rotireDreapta(), rotireStanga(), -, deplasareInainte()

(b) -, rotireDreapta(), rotireStanga(), deplasareInainte(), rotireStanga()

(c) -, deplasareInainte(), rotireDreapta(), rotireStanga(), deplasareInainte()

(d) deplasareInainte(), rotireDreapta(), rotireStanga(), deplasareInainte(), -

3
10. Care din urm toarele probleme referitoare la o mult, ime de numere întregi M = {x1 , x2 , . . . , xn }, (n > 1000), poate 
rezolvat  cu un algoritm care are un num r minim de pa³i?

(a) Sortarea elementelor mult, imii


(b) Generarea tuturor permut rilor mult, imii M
(c) Generarea elementelor produsului cartezian M x M
(d) Determinarea elementului maxim al mulµimii M

11. Într-o sal  de examen, scaunele sunt etichetate cu o liter  urmat  de o cifr . Se consider  c  literele sunt {a, b, c, d, e}
s, i cifrele sunt {0, 1, 2, . . . , 9}. Scaunele trebuie s  aib  etichete diferite între ele. Care este num rul minim de scaune
care trebuie s  e în sal  pentru a folosi toate combinat, iile posibile?

(a) 50 (b) 15 (c) 100 (d) 45

12. Care este complexitatea de timp a urm torului program C++?

int i , j , k ;
for ( i = 0 ; i < n; i ++) {
k = n;
for ( j = 0; j < k; j ++) {
k = k / 2;
}
}

(a) O(n ∗ log n) (b) O(log n) (c) O(n) (d) O(n2 )

13. Fie secvent, a de cod de mai jos. Ce trebuie de completat în locul celor trei puncte (. . . ) pentru ca în matricea c s  se
obt, in  combin rile de n luate câte k (Cnk ).
int c [ n+1][n+1];
for ( int i = 0; i <= n ; i ++)
for ( int j = 0; j <= n ; j ++)
c[ i ][ j ] = 0;
c [0][0] = 1;
for ( int i = 1; i <= n ; i ++) {
c[ i ][0] = 1;
for ( int j = 1; j <= i ; j ++)
c[ i ][ j ] = ...
}

(a) c[i - 1][j - 1] * c[i - 1][j] / c[i][j - 1]

(b) c[i - 1][j] + c[i - 1][j - 1]

(c) c[i][j - 1] + c[i - 1][j]

(d) c[i - 1][j - 1] + c[i][j - 1]

14. Se considera urm torul algoritm cu nr, x s, i y numere naturale:

x, y
cites, te ;
nr ← 0;
d ← 2;
cât timp d<=x si d<=y execut 
dac  x % d = 0 si y % d=0 atunci
,

nr ← nr + 1;
x ← [x/d];
y ← [y/d];
altfel
d ← d + 1;
scrie nr, x, y

4
Ce se va as, a dac  se citesc valorile x=720 s, i y=495 ?

(a) 3, 48, 33
(b) 3, 16, 11
(c) 2, 48, 33
(d) 3 16 33

15. Se consider  mult, imea A = {1, 2, . . . , n} s, i mult, imea B = {1, 2, . . . , m}, m > n. O funct, ie injectiv  denit  pe A cu
valori în B poate  considerat :

(a) un aranjament de n elemente luate câte m


(b) un aranjament de m elemente luate câte n
(c) o combinare de m elemente luate câte n
(d) o combinare de n elemente luate câte m

16. Care este ordinul de complexitate timp pentru algoritmul urm tor?

functia sum
,

Date de intrare: n
Date: s = 0
dac  n == 0 atunci
returneaz  1
pentru i de la 0 la n − 1 execut 
s = s + sum(n − 1)
returneaz  s
(a) O(n2 ) (b) O(2n ) (c) O(n!) (d) O(log n)

17. Num rul de subgrafuri ale unui graf cu 23 noduri este:


22
(a) 2 −1 (b) 224 (c) 223 (d) 223 − 1

18. Fie G un graf neorientat format din 3 componente conexe cu 3, 4 s, i, respectiv, 5 noduri. Dac  cele 3 componente
conexe cont, in minimul posibil de muchii, care este num rul maxim de muchii care pot  ad ugate în graf astfel încât
num rul de componente conexe s  ramân  acelas, i?

(a) 19 (b) 60 (c) 12 (d) 10

19. Dac  se elimin  o muchie dintr-un arbore complet cu cel put, in dou  niveluri se obt, ine:

(a) un graf neconex

(b) cel putin dou  noduri izolate

(c) tot un arbore

(d) cel putin un ciclu

20. Fie G un graf neorientat cu n noduri. Fiecare nod are un atribuit un identicator 1, 2, ..., n. În graf exist  muchii:

ˆ între oricare dou  noduri cu identicatori pari

ˆ între oricare dou  noduri cu identicatori impari

ˆ între oricare dou  noduri cu identicatori de forma 2k , respectiv 2k + 1

5
Dac  n este par, care este num rul maxim de muchii care pot  t iate astfel încât graful G s  r mân  format dintr-o
singur  component  conex ?
n2 n n2
(a)
4 (b)
2 (c)
4 −n (d) 2n

21. Un arbore binar complet este un arbore binar în care toate nivelurile, cu excepµia ultimului sunt ocupate în întregime.
Considerând faptul c  toate nodurile de pe ultimul nivel sunt grupate în partea stânga a acestuia, un arbore binar
complet cu n noduri frunz  are:

(a) n+1 noduri. (b) log n noduri. (c) 2n − 1 noduri. (d) 2n noduri.

22. O trupa de genis, ti încearc  s  mineze o suprafat  de form  patrat , având la dispozitie n mine. Aces, tia trebuie s 
plaseze minele astfel încât, dac  explodeaza o min  s  nu explodeze s, i celelalte din apropiere. Pentru aceasta ei împart
suprafat, a în nXn p trate astfel încât într-un p trat poate  pus  în sigurant,   o singur  min . Aces, tia apeleaza la un
program de tip backtracking care s  genereze toate combinat, iile posibile pentru a acoperi toate rândurile s, i coloanele
formei create cu m car o min . Care din secvent, ele de mai jos veric  corect o astfel de plasare a minelor?

(a)
int pozitioneaza ( int n)
{
for ( i =1; i <n ; i ++)
i f ( v [ i ]==v [ n ] || a b s ( v [ i ] = v [ n])== a b s ( i =n ) ) return 0;
return 1 ;
}

(b)
int pozitioneaza ( int n)
{
for ( i =1; i <k ; k++)
i f ( v [ i ]==v [ n ] ) return 0;
return 1 ;
}

(c)
int pozitioneaza ( int n)
{
for ( i =1; i <n ; n++)
i f ( v [ i ]==v [ n ] || a b s ( v [ i ] = v [ n])== a b s ( i =n ) ) return 0;
return 1 ;
}

(d)
int pozitioneaza ( int n)
{
for ( i =1; i <n ; n++)
i f ( v [ i ]==v [ n ] || a b s ( i =n)==0) return 0;
return 1 ;
}

23. Ce calcul realizeaz  funct, ia urm toare?

int fun ( int x, int y)


{
i f ( y == 0 ) return 0;
return ( x + f u n ( x , y =1));
}

6
(a) x+y (b) x*y (c) x + x*y (d) xy

24. Fie subprogramul:

void functie ( int n, int b, int &m)


{

if ( n!=0){
if ( n%b ! = 0 ) m++;
f u n c t i e ( n /b , b ,m) ;
c o u t <<n%b ; }
}

Pentru un apel de forma functie(100,5,m) unde m=0, funct, ia va avea ca efect:


(a) transform  num rul în baza b s, i contorizeaz  în m num rul de cifre ale lui n transformat în baza b.
(b) num r  câte cifre diferite de 0 în baza b are num rului n.
(c) transform  num rul în baza m.
(d) num r  de cate ori apare o cifr  b în num rul n.

25. Pentru vericarea cunos, tint, elor de limba german , o grup  de 8 elevi au sust, inut un examen alc tuit din dou  teste
de vericare. La ecare dintre cele dou  teste unii dintre elevi au fost absenti. Codul de identicare pentru un elev s, i
nota obt, inut  la un test sunt stocate într-o structura de date. Notele obt, inute de elevii care au fost prezent, i la ecare
dintre cele dou  teste sunt stocate în tablourile test1 si test2. Pentru a trece examenul, un elev trebuie s  obt, in  o
not  mai mare sau egal  cu 5 la ecare dintre cele dou  teste. Daca un elev nu este prezent la un test atunci nota
pentru acel test se consider  0.

struct e l e v {
int c o d ;
int n o t a ;
};
struct e l e v t e s t 1 [ 5 ] , t e s t 2 [ 7 ] ;
int f u n ( void ) {
int r e t = 0 ;
int i , j ;
for ( i = 0 ; i < 5 ; i ++) {
for ( j = 0 ; j < 7 ; j ++) {
if ( . . . ) {
ret = ret + 1;
}
}
}
return ret ;
}

Care este condit, ia care trebuie vericat  în locul marcat cu . . . pentru ca funct, ia s  returneze num rul de elevi care
au trecut examenul?

(a) test1[i].cod == test2[j].cod && test1[i].nota > 4 && test2[j].nota > 4

(b) test1[i] == test2[j] && test1[i].nota >= 5 && test2[j].nota >= 5

(c) test1[i].cod == test2[j].cod && test1[i].nota > 5 && test2[j].nota > 5

(d) i == j && test1[i].nota > 4 && test2[j].nota > 4

7
R spunsurile corecte cu explicatii ,

1. a
În C/C++ orice valoare nenul  este asimilat  cu valoarea logic  ADEV€RAT (TRUE) care are ca valoare numeric 
valoarea 1 s, i orice valoare nul  este asimilat  cu valoarea logic  FALS (FALSE) care are ca valoare numeric  valoarea 0.

2. c
Pentru primul pas al instruct, iunii for, variabila i va avea valoarea 10, deci cele trei instruct, iuni vor avea urm torul efect:
ˆ s va lua valoarea 10
ˆ se va as, a valoarea 10, dup  care i va  decrementat, deci va lua valoarea 9
ˆ s va  egal cu 10 - 9, deci va avea valoarea 1
Aces, ti trei pas, i vor  reluat, i pentru valorile lui i: 8 6 4 2. La ecare trecere prin for, variabila s va  incrementat .

3. c
Pentru a rezolva aceast  problem , trebuie vericat pseudocodul pentru toate variantele de r spuns.

4. c
Având în vedere c  variabila k este static , la revenirea din ecare apelul se va as, a valoarea acesteia care este 0 (zero).

5. a
Instruct, iunea switch veric  valoarea lui x s, i face saltul la instruct, iunile cu eticheta respectiv . Dup  execut, ia instruct, iunilor
corespunz toare etichetei la care s-a f cut saltul, execut, ia programului se continu  cu instruct, iunile imediat urm toare
(dac  nu exist  break s, i iese din switch la întâlnirea instruct, iunii break .

6. b
#include <i o s t r e a m >
#include <c s t r i n g >
using namespace s t d ;
char x [ ] = { 'A ' , 'N ' , 'A ' , ' L ' , ' I ' , ' Z ' , 'A ' , 'Q ' , ' R ' , ' E ' , ' Z ' , 'U ' , ' L ' , ' T ' , 'A ' , ' T ' , 'Q ' } ;
int n ;
void c r i p t a r e ( int p )
{
for ( int i =0; i <n ; i ++)
x [ i ] = ( ( ' Z '−x [ i ])%p+ ' a ' ) ;
}

void d e c r i p t a r e ( int p )
{
for ( int i =0; i <n ; i ++)
x [ i ] = ( ( ' z '−x [ i ])+ ' A ' ) ;
}

void a f i s ()
{
for ( int i =0; i <17; i ++)
cout<<x [ i ] ;
cout<<e n d l ;
}

int main ( )
{
n=s t r l e n ( x ) ;

9
afis ();
criptare (26);
afis ();
decriptare (26);
afis ();
return 0 ;
}

7. b
Prin parcurgerea codului se identic  urm toarele aspecte: vectorul este parcurs începând cu o anumit  pozit, ie pân  la
ultimul element (inclusiv). De la aceast  pozit, ie pân  la nalul vectorului se mut  elementele de pe pozitia i+ 1 pe pozit, ia
i. La nal, num rul de elemente ale vectorului se decrementeaz . Toate aceste operat, ii elimin  din vector elementul de
pe pozit, ia de start a instruct, iunii f or.

8. b
S, irul de caractere este procesat de la nal la început în grupuri de trei caractere. Caracterele din ecare grup sunt puse
într-un s, ir temporar în ordine invers , iar s, irul temporar este as, at doar dac  este înaintea s, irului inf din punct de vedere
lexicograc. Ultima grupare de trei caractere ar  fost format  doar din caracterul A, dar aceasta nu este procesat 
pentru c  i ajunge 0 s, i se iese din bucla while.

9. c
Raspuns c) Matricea A Orice element A[l][m] va  interschimbat de dou  ori, odata pentru i = l si j = m si apoi pentru
i = m si j = l. Swap de dou  ori înseamn  ca matricea nu se schimb  .

10. c
Algoritmul de c utare a existent, ei a cel putin unei perechi de numere din tabloul v a c ror diferent, a este d, utilizeaza
dou  variabile index init, ializate cu 0 respectiv 1. Aceste variabile vor  incrementate funct, ie de valoarea de adev r a
expresiei E. Dac  diferent, a dintre elementele indicate este strict mai mic  decât d este incrementat indexul j altfel indexul
i (daca nu cumva diferent, a este d). A nu se uita faptul elementele tabloului sunt în ordine strict cresc toare.

11. c
Algoritmul de c utare utilizeaz  dou  variabile de tip index init, ializate cu 0 s, i n-1 (elementele de cap t ale tabloului).
Sunt comparate elementele de index i s, i j s, i corespunz tor se incrementeaza i sau j în funct, ie de valoarea de adev r a
expresiei (v[i] <= v[j]. Algoritmul se opreste atunci când i == j. Elementul maxim este cel de pe pozit, ia i (sau j).

12. b
Deoarece, o dat  ce melcul a ies, it din fântân , nu mai poate s  cad  înapoi, se poate considera c  fântâna are (N − Y )
metri, iar melcul urc  zilnic (X − Y ) metri.

13. b
Pseudocodul calculeaz  factorialul num rului x. Acest lucru se poate observa calculând f (2) s, i f (3). Deoarece 6! = 720,
valoarea 719 se poate obt, ine prin instruct, iunea f (6) − 1.

14. b
1. Secvenµele sunt asezate în ordinea cresc toare a dimensiunilor lor.
2. Se aleg pentru interclasare primele dou  secvenµe. Secvenµa rezultat  inlocuie³te cele dou  secvenµe interclasate.
3. Se repet  pa³ii 1 si 2 pân  se obµine o singura secvenµ .

15. b
Tat l lui Cristian a³eaz  cutiile în ordinea 3,5,4,1,2 (15/3>40/10>18/6>10/5>8/8). Alege cutiile 3,5,4 ³i cere desfacerea
cutiei 1.
Observat, ie. Nu cred c  trebuie s  explic metoda greedy. Cei care cunosc metoda, vor rezolva problema mai rapid. Ceilalt, i
vor încerca toate variantele posibile.

10
16. d
((ys 10n/2 + yd ) ³i ((xs 10n/2 + xd ) sunt numere formate din n cifre. În varianta (d), (xs − xd ) ³i (yd − ys ) sunt numere
formate din n/2 cifre. Înmulµirile xs ys ³i xd yd pot  efectuate o singur  dat .

17. c
Complementul unui graf G cu n noduri s, i m muchii: din graful complet (care cont, ine acelas, i noduri ca G), s, i care
are n ∗ (n − 1)/2 muchii, se elimin  cele m muchii din G. Prim urmare, num rul de muchii din complementul lui
G = n ∗ (n − 1)/2 − m.

18. a
(a) corect, nr max de noduri pe nivelul level =2level−1 ; (b) gres, it, nr max de frunze = 210−1 = 512; (c) gres, it, nr max
noduri din arbore = 2level − 1 = 1023; (d) gres, it, n0 = n2 + 1 pt un arbore strict

19. a
Nodurile nu vor avea multe muchii - acestea se denesc doar între un triunghi s, i triunghiurile vecine din ret, ea. Lista de
adiacent,   este mai potrivit , deoarece este mai ecient  pentru stocarea grafurilor rare s, i se evit  re-alocarea matricei în
cazul ad ug rii/s, tergerii de noduri/muchii (graful este construit 'on-the'y', pe masur  ce se exploreaz  scena).

20. a
Raspuns a) B1 : (1 + height(n->right)), B2 : (1 + max(h1,h2))
typedef int Tip_cheie ;
struct Nod
{
Tip_cheie c h e i e ; // c h e i a e s t e c h i a r v a l o a r e a
Nod * s t g , * d r t ;
};
int Height ( Nod * n)
{
int h1 , h2 ;
i f ( n == NULL) return − 1;
i f ( n−>s t g == NULL)
i f ( n−>d r t == NULL) return 0 ;
else return ( 1 + Height ( n−>d r t ) ) ; // a i c i e s t e B1
else {
h1 = Height ( n−>s t g ) ;
i f ( n−>d r t == NULL) return ( 1 + h1 ) ;
else
{
h2 = Height ( n−>d r t ) ;
i f ( h1>=h2 ) // a i c i e s t e B2 d i n pseudocod
return ( 1 + h1 ) ;
else return (1+ h2 ) ;
}
}
}
void I n s e r t N ( Nod * &r , Tip_cheie k ) // p e n t r u c r e a r e BST
{
i f ( r==0) r=MakeNod ( k ) ;
else
{
Nod * p, * p1 ; p=r ;
while ( p !=0)
{
p1=p ;

11
i f ( p−>c h e i e > k ) p=p−>s t g ;
else
i f ( p−>c h e i e < k) p=p−>d r t ;
else // n o d u l e x i s t a
{ p r i n t f ( " nodul e x i s t a \n" ) ; return ; }
} // s e i e s e cu p=0 s i p1 i n d i c a n o d u l dupa c a r e s e i n s e r e a z a
i f ( k < p1−>c h e i e ) p1−>s t g=MakeNod ( k ) ;
else p1−>d r t=MakeNod ( k ) ;
}
}

21. a
n(n-1)/2 muchii in total in graf => 15*14/2=105 muchii arbore binar cu 3 niveluri=> 14 muchii 105-14=91

22. b
Se printeaz  reprezentarea binar  in ordine inversa 10011

23. a
Plin : VÂRF = = n-1, Goal : VÂRF = = -1
Pentru push: stiva[++varf]=val Pentru pop: return stiva[- -varf]

24. a
Funct, ia dat  este o funct, ie recursiv  care se va opri când se va ajunge pe un element al matricii cu valoarea 1 sau când
x sau y va lua o valoare mai mic  sau egal  cu 0. Funct, ia este apelat  cu valorile 2, 2. Elementul din matrice de pe
aceast  pozit, ie are valoarea 0. Se va as, a x = 2, y = 2 s, i se va apela funct, ia recursiv cu valorile x - 1, y - 1, respectiv
1, 1. Elementul de pe aceast  pozit, ie are tot valoarea 0, deci se va asa x = 1, y = 1 s, i se va apela funct, ia recursiv cu
valorile x - 1, y - 1, respectiv 0, 0. Acest element are valoarea 1, deci se va as, a x = 0, y = 0, dar nu se va mai apela
funct, ia din nou, deoarece oricare dintre cele trei condit, ii din if va avea valoarea fals.

25. b
Pentru as, area în ordinea descrescatoare a vârstei, lista liniar  simplu înlant, uit  trebuie parcurs  în ordinea de la ultimul
la primul element. (a) gres, it - parcurge tabloul în ordine invers  alfabetic; (b) corect - parcurge recursiv lista - as, area
se face la revenirea din recursie, deci în ordine invers  a elementelor; (c) gres, it - parcurge lista de la primul la ultimul
element, deci în ordinea crescatoare a vârstei; (d) gres, it - parcurge lista recursiv, cu as, area înainte de intrarea în recursie,
deci de la primul la ultimul element.

12
R spunsurile corecte cu explicatii ,

1. a
Pentru calculul mediei aritmetice, este necesar  calcularea sumei elementelor vectorului dup  care se împarte rezultatul
la num rul elementelor. Dintre variantele de r spuns, numai una (varianta a) face acest lucru, celelalte variante e împart
sumele part, iale la num rul elementelor, e adun  indexul elementelor la suma s, i nu valoarea elementelor stocate în vector.

2. d
Întrucât instruct, iunea while nu testeaz  dac  x este egal cu y ci îi atribuie lui x valoarea y , care este un num r diferit
de 0, va  asimilat ca un test adev rat, dar x va avea valoarea 15. Cum testul 15>15 impune intrarea pe ramura else, y
va devein 0. La urm torul test în while x=y=0, 0 este asimilat ca false, deci se p r ses, te bucla. Se as, eaz  x care are
valoarea 0.

3. d
Pentru secvent, a de cod dat  s, i pentru datele de intrare specicate, se obt, ine acelas, i rezultat dac  se foloses, te instruct, iunea
while sau do ... while.

4. c
Instruct, iunea for init, ializeaz  variabilele i s, i s cu valoarea 0. Instruct, iunea while executat  pentru i = 0 se va executa de
5 ori, pentru valorile 1, 2, 3, 4, 5. Se intr  în while s, i pentru i = 5 pentru c , la testul i++ < 5, se compar  cu 5 valoarea
init, ial  a lui i (în acest caz 4) si abia dup  aceea se incrementeaz . Dup  executarea instruct, iunii while i va avea valoarea
5, deci nu se va mai executa un nou pas al instruct, iunii for.

5. b
Prima instruct, iune for se execut  de 3 ori, pentru i = 3, 2, 1. Pentru i = 3, a doua instruct, iune for se va executa de 4 ori,
pentru j = 3, 2, 1, 0. Pentru ecare dintre aceste valori, se va as, a caracterul corespunz tor codului ASCII rezultat din
adunarea codului ASCII a caracterului 'A' cu valoarea variabilei j. Deci, pentru i = 3, se vor as, a caracterele DCBA. Se
repet  rat, ionamentul pentru celelalte valori ale lui i, pentru care se vor as, a CBA s, i BA.

6. a
Se foloses, te denit, ia operat, iilor de incrementare/decrementare pre s, i post xate. Pentru incrementarea prexat  (++i)
se incrementeaz  variabila s, i apoi se foloses, te, incrementarea postxat  (i++) foloses, te variabila s, i apoi o incrementeaz .

7. c
8. a
Codul furnizat pune 0 în locul elementelor aate pe pozit, iile care împ rt, ite la 3 dau resul 0. As, adar, r spunsul corect
este 0 4 5 0 2 4 0 7.

9. b
Funct, ia calculeaz  suma elementelor de pe linia s, i de pe coloana dat  de parametrul val. Deci, se aduna elementele de
pe linia 2 (suma lor este 15) si de pe coloana 2 (suma este tot 15), deci raspunsul este 30.

10. a
Funct, ia f caculeaz  suma elementelor de pe coloana indicat  ca al treilea parametru al funct, iei, iar procedura Algoritm
apeleaz  funct, ia s, i determin  valoarea maxim  dintre valorile returnate de funct, ie.

9
11. c
// Example program
#include <i o s t r e a m >
#include <s t r i n g >
using namespace s t d ;
int main ( )
{
int
i , j , a [ 1 0 ] [ 1 0 ] , n=4;
for
( i =1; i<=n ; i ++)
for ( j=i ; j<=n ; j ++)
{
a [ i ] [ j ]=( i+j −1)%n ;
a [ j ] [ i ]=a [ i ] [ j ] ;
}
for ( i =1; i<=n ; i ++)
{ for ( j =1; j<=n ; j ++)
cout<<a [ i ] [ j ]<<" " ;
cout<<e n d l ;
}
return 0 ;
}

12. b
Interschimbare 4 cu 1, interschimbare 7 cu 3, interschimbare 7 cu 5

13. b
14. c
Din lista de s, iruri de caractere se scot dou  cu lungimile cele mai scurte, se concateneaz  s, i rezultatul concaten rii este pus
înapoi în list . Procesul se repet  pân  în list  este un sigur cuvânt. Concaten rile care se efectueaz  sunt: mere+prune,
ananas+smochine, mereprune+portocale, clementine+ananassmochine, merepruneportocaleclementineananassmochine.

15. b
Funct, ia f utilizeaz  algoritmul backtracking pentru a genera toate submult, imilePmult, imii {1, 2, 3, ..., n}. Se vor genera
n
Cnk submult, imi de k elemente, astfel, num rul total de submult, imi generate este k=1 Cnk = 2n − 1. Pentru n = 6 se vor
genera 63 de submult, imi.

16. c
Pentru decodicarea mesajului este necesar s  urm m pas, ii algoritmului de codicare în ordine invers :
• se împarte mesajul în fragmente;
• se construies, te tabelul de codicare;
• se determin  ordinea de parcurgere a coloanelor;

S U B I E C T
A D M I T E R
E L A I N
F O R M A T I
C A

17. c
c) Si P s, i Q Q este adev: Graful este neorientat, deci orice muchie cres, te suma gradelor cu 2. P este adev: dac  se
consider  suma gradelor s, i se scad toate gradele pare rezult  un num r par (q este adev). Prin urmare, num rul de grade
impare este par.

10
18. c
Fiecare nod din primul set este conectat cu ecare nod din al doilea set. Prin urmare, num rul total de muchii este m ∗ n.

19. a
Primul num r va  r d cina, iar urm toarele N/4 − 1 numere vor  în subarborele drept. Celelalte 3 ∗ N/4 numere vor
ajunge în subarborele stâng s, i, deoarece sunt introduse în ordine descresc toare, ecare num r va  ad ugat ca u stâng
al ultimului nod din stânga. Astfel, calea cea mai lung  pornes, te de la r d cin  s, i traverseaz  cele 3 ∗ N/4 noduri care
au fost introduse în ordine descresc toate. Deci, num rul de leg turi între cele 3 ∗ N/4 + 1 noduri este 3 ∗ N/4.

20. b
Num rul de muchii dintr-un graf turneu cu n noduri este acelas, i cu num rul de muchii dintr-un graf complet cu n noduri.
În plus, la un graf turneu, ecare muchie are o orientare. Pentru un graf complet cu n noduri, num rul de muchii este
n ∗ (n − 1)/2. Dac  ecare muchie are o orientare atas, at  (exist  dou  orient ri posibile pentru ecare muchie), se poate
calcula num rul de posibilit t, i în care aceste muchii pot  aranjate. Cu alte cuvinte, avem n∗(n−1)/2 sloturi (reprezetate
de muchii), ecare slot putând lua dou  valori posibile (reprezentate de cele dou  orient ri posibile). Astfel, num rul
total de posibilit t, i este 2n∗(n−1)/2 .

21. b
Graful respectiv este defapt un arbore binar (în care ecare nod are maxim doi i) cu r d cina 1 s, i toate nivelurile
complete mai put, in ultimul nivel care este umplut peste jum tate. În lt, imea arborelui este log2 100 = 6, deci, distant, a de
la r d cina 1 la frunza 64 este 6. Pe ultimul nivel al arborelui sunt 37, deci nodul 100 este în subarborele drept (raportat
la r d cin ), iar distant, a de la nodul 1 la 100 este tot 6. Astfel, drumul cel mai lung este între nodurile 64 s, i 100 pentru
c  64 s, i 100 sunt pe ultimul nivel, iar drumul trece prin r d cin .

22. d
Funct, ia calculeaz  num rul de apeluri recursive pân  când cele dou  argumente au aceeas, i valoare la care se adun  de
dou  ori valoarea la care s-a ajuns. Valoarea lui x cres, te cu 1 la ecare apel, iar valoarea lui y scade cu 1 la ecare apel,
întâlnindu-se la valoarea (x + y)/2 = 1250. Deci, rezultatul este egal cu 1250 + 1250 + 250 = 2750 pentru c  au fost 250
de apeluri recursive (la ecare apel s-a adunat 1 la rezultat).

23. a
Funct, ia recursiv  calculeaz  num rul de cifre dintr-un num r întreg.

24. a
a) Plin : (ULTIM+1) mod n = = PRIM, Goal : ULTIM = = PRIM
typedef int atom ;
#d e f i n e dimmax 8
r u c t queue

int head , t a i l ;
atom v e c t [ dimmax ] ;

t n e x t p o s ( int i n d e x ) ;
t isempty ( queue Q) ;
i d i n i t Q ( queue &Q) ;
i d put ( queue &Q, atom a ) ;

t n e x t p o s ( int i n d e x )

if ( index<dimmax − 1 )
return i n d e x + 1 ;
else return 0 ;

11
t isempty ( queue Q)

return (Q. head == Q. t a i l ) ;

i d i n i t Q ( queue &Q)

Q. head = Q. t a i l = 0 ;

i d put ( queue &Q, atom a )

// i f (Q. head == n e x t p o s (Q. t a i l ) )


i f ( (Q. t a i l + 1)% dimmax == Q. head ) // a s t a s e t e s t e a z a
c o u t << " \n b u f f e r p l i n ! " ;
else
{
Q. v e c t [Q. t a i l ] = a ;
Q. t a i l = n e x t p o s (Q. t a i l ) ;
}

i n main
eue Q;
i n i t Q (Q) ;
for ( int i = 1 ; i <= 4 ; i ++)
{
put (Q, i ) ;
c o u t << Q. t a i l << " " << Q. head << e n d l ;
}
for ( int i = 1 ; i <= 6 ; i ++)
{
c o u t << " e x t r a g " << g e t (Q) << e n d l ;
}
c o u t << Q. t a i l << " " << Q. head << e n d l ;
for ( int i = 1 ; i <= 9 ; i ++)
{
put (Q, i ) ;
c o u t << "pun " << i <<" " ;
c o u t << Q. t a i l << " " << Q. head << e n d l ;
}

25. a
Varianta I reprezint  rezolvarea recursiv , iar varianta IV este rezolvarea nerecursiv  a problemei.
Dob nda este de 0,5% pe an, adic  este 0.5/100 pe an, iar pentru o lun  dobânda este 0.5/100/12. Dup  prima lun 
Alecu va avea în cont s (suma init, ial ) la care se adaug  dobânda pe prima lun , adic  s ∗ 0.5/100/12. Suma total  la
sfârs, itul primei luni va  deci s ∗ (1 + 0.5/100/12). Dup  2 luni suma din cont va  s ∗ (1 + 0.5/100/12) ∗ (1 + 0.5/100/12)
s.a.m.d.

12
R spunsurile corecte cu explicatii ,

1. b
O variabil  de tip structu  poate  asignat  unei alte variabile de tip structur  (aceas, i structur ), dar nu pot  comparate
folosind operatorul ==.

2. d
DeMorgen aplicat corect:
! ( ( x <= − 10)||(x >11)) && ! ( ( x < − 7)||( x> −2))

( ( x>−10)&&(x<=11) && ( x>=−7)&&( x<=−2) )

Deci intervalul este [-7, -2]

3. b
În limbajul C/C++ un identicator (numele unei variabile, functii, clase/structuri etc.) exist  din momentul în care este
scris. La compilare, un identicator este cautat in domeniul curent (domeniu este secvent, a de instruct, iuni delimitat  de
acolade ..., exceptie facând domeniul global) si dac  nu este g sit va  c utat în domeniul parinte. În cazul de fat,   exist 
variabila (identicatorul) x global (declarat  in domeniul global) s, i variabila x local (declarat  în domeniul funt, iei main).
Instruct, iunea int x = x; are ca efect alocare de memorie pentru variabila x local urmat  de init, ializarea cu ea îns s, i. Din
acest motiv valoarea as, at  de program este nedenit .

4. c
Acest exercit, iu se rezolv  prin urm rirea valorilor variabilelor i s, i j la ecare pas . Init, ial, i = 0. In al doilea for se intr ,
pentru prima dat , cu i = 0, deci acest for se transform  in f or(j = 5; j > 3; j = −2). Deci, instruct, iunea din al doilea
for se va executa o singur  dat , pentru c , dup  primul pas, variabila j va lua valoarea -2. Acelas, i rat, ionament s, i pentru
i = 2 s, i pentru i = 4, deci, la nal, s va lua valoarea 3.

5. a
Expresia x=3 are ca rezultat valoarea 3, deci va  valoarea adev rat din punct de vedere logic. Ca urmare, instruct, iunea
if (x=3) va  executat  pe ramura corespunz toare valorii logice ADEV€RAT pentru condit, ie.

6. a
Pentru rezolvarea problemei, trebuie vericate cele patru variante de cod pentru un exemplu dat. Pentru exemplul din
subiect, pret, ul pe 16 decembrie trebuie s  e 90 de lei, corespunz tor unui pret, init, ial de 100 de lei si unei perioade de 4
zile pân  la expirare. Se testeaz  variantele de r spuns cu aceste date s, i se stabiles, te r spunsul corect.

7. b
În cazul declar rii unui tablou bidimensional a doua dimensiune trebuie cunoscut .
8. b
Cele dou  f or-uri parcurg elementele matricii aate deasupra diagonalei principale s, i le interschimb  cu elementele aate
sub aceasta. Un element aat pe pozit, ia [i][j] va  interschimbat cu elementul aat pe pozit, ia [j][i].

9. b
Pentru o litera Si se parcurg literele de la S0 la Si−1 s, i se veric  dac  Sj > Si , unde j = 0, . . . , i − 1.

10
10. b
// a l g o r i t m fibonaci
int a = 0 , b = 0 , c = 1;
for ( i = 0 ; i <n ; i ++)
for ( j = 0 ; j <m; j ++)
{
M[ i ] [ j ] = c ; a = b ; b = c ; c = a + b ;
}

for ( i = 0 ; i <n ; i ++)


{
for ( j = 0 ; j <m; j ++)
c o u t << M[ i ] [ j ] << " " ;
c o u t << e n d l ;
}
for ( i = 0 ; i <m; i ++)
{ suma += M[ 0 ] [ i ] ;
suma += M[ n − 1 ] [ i ] ;
}
for ( i = 1 ; i <n − 1 ; i ++)
{
suma += M[ i ] [ 0 ] ;
suma += M[ i ] [m − 1 ] ;
}
c o u t << "Suma e l e m e n t e l o r de pe marginea m a t r i c i i e s t e : " << suma << e n d l ;

11. d
Suma elementelor vectorului este 1024. Funct, ia calculeaz  suma pentru ecare h = 1024...1 (h = 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1
11 ori.
int f ( int v [ ] , int n ) {
int h = n ;
int sum = 0 ;
while ( h > 0 ) {
for ( int i = 0 ; i < n ; i ++)
sum = sum + v [ i ] ;
h = h / 2;
}
return sum ;
}

int main ( )
{
int v[1024];
for ( int i = 0 ; i < 1 0 2 4 ; i ++)
v [ i ] = 1;
s t d : : c o u t << f ( v , 1 0 2 4 ) << s t d : : e n d l ;
}

12. c
Pentru i = 1, bucla interioar  este executat  de n ori.
Pentru i = 2, bucla interioar  este executat  de aproximativ n/2 ori.
Pentru i = 3, bucla interioar  este executat  de aproximativ n/3 ori.

11
...........................................................................
Pentru i = n, bucla interioar  este executat  de aproximativ n/n ori.
Deci complexitatea timpului total al algoritmului de mai sus este (n + n/2 + n/3 + ... + n/n). Care devine n ∗ (1/1 +
1/2 + 1/3 + ... + 1/n). Seria (1/1 + 1/2 + 1/3 + ... + 1/n) este egal  cu O(log n). Deci complexitatea timp a codului de
mai sus este O(n · log n).

13. c
c) V3 este gresit  Corect era for (j = 0; j < n; j++) for (i = 0; i < n-1; i++)

14. a
V1: B6= 0; V2:A Cod pentru pseudocod
int e u c l i d ( int a , int b)
{
int c ;
while ( b )
{
c = a % b;
a = b;
b = c;
}
return a;
}

15. b
Elevii sunt a³ezaµi în ordinea cresc toare a în lµimilor ³i schiurile sunt a³ezate în faµa lor, în ordinea cresc toare a
lungimilor. În faµa ec rui elev se a  o pereche de schiuri. Fiecare elev prime³te perechea de schiuri din faµa sa.
Observat, ie. Problema se poate rezolva rapid folosind metoda greedy. Instructorul îi as, eaz  pe elevi în ordinea descresc -
toare a raportului dintre în lt, imea lor s, i lungimea schiurilor. Cei care cunosc metoda, vor rezolva problema mai rapid.
Ceilalt, i vor încerca toate variantele posibile.

16. c
Backtracking. Se xeaz  pe ultima pozit, ie o liter  diferit  de O s, i O pe penultima, ceea ce duce la 5! permut ri pentru
literele din fat, a lui O. Cum pentru ultima pozit, ie sunt 6 variante, în total avem 5!*6 combinat, ii posibile deci 6!, adic 
720.

17. b
Într-un graf complet neorientat cu n noduri, orice permutare de noduri reprezint  un lant, hamiltonian. Prin urmare,
r spunsul este n!.

18. a
Trebuie calculate lant, urile minime între ecare pereche de dou  vârfuri (i, j), unde i = 1, . . . , 7 s, i j = (i + 1), . . . , 8.
Lnt, urile minime de lungime 3 sunt între vârfurile: 1-4, 1-8, 2-6, 3-4, 3-5.

19. a
Num rul maxim de muchii se obt, ine cand cele 3 componente conexe au 8, 1, respectiv 1 noduri. Pentru un graf complet
cu n noduri, num rul de muchii este n ∗ (n − 1)/2. Cand prima component  conex  este un graf complet, num rul de
muchii ale acesteia este: 8 ∗ 7/2 = 28. Celelalte dou  coponente conexe, cu câte un nod ecare, nu au muchii. Prin
urmare, num rul maxim de muchii este 28.

20. b
Doar un circuit hamiltonian conµine toate nodurile unui graf ³i nodurile nu se repet .

12
21. c
inserarea in Heap
//f iu, parinte si aux sunt indecsi in V
N ← N + 1;
V [N ] ← a;
f iu ← N ;
parinte ← N/2;
cât timp parinte >= 1 execut 
dac  V [parinte] < V [f iu] atunci
aux ← V [parinte];
V [parinte] ← V [f iu];
V [f iu] ← au;;
f iu ← parinte;
parinte ← parinte/2;
altfel
parinte ← 0;

22. a
Operat, ii cu membrii unei structuri.

23. c

24. b
f 1(x) · f 2(x) calculeaz  x!

25. b
Funct, ia calculeaz  num rul de apeluri recursive pân  când valoarea lui n devine mai mica decât 10. Astfel, dup  apelul
funct, ie(102304,a,b), n primes, te valoarea 102304 s, i apoi funct, ia va intra pe ramura else. Practic, la ecare apel se va
extrage doar partea intreag  a împ rt, irii la 10 a num rului n, pentru ca în momentul în care n r mâne doar cu o cifr 
acesta este asignat  num rului a sau b dup  caz. Dup  aceasta, în ordinea invers  apelului se execut  if-ul nal, separând
pentru ecare num r cifrele egale cu 0 (se vor ad uga la dreapta num rului a) s, i cele diferite de 0 (se vor ad uga la
dreapta num rului b). Astfel, a=1 init, ial, va primi cei 2 de 0 din n, iar la b=0 init, ial se vor ad uga toate cifrele diferite
de 0 din n. Deci la nal a=100, iar b=1234.

13
R spunsurile corecte cu explicatii ,

1. b
Valoarea de adev r a condit, iei instruct, iunii while este 0 (zero) motiv pentru care cuvântul Queen va  as, at o singura
dat .

2. c
3. c
f1 s, i f2

4. a
Des, i vectorul are 10 elemente, la apel n va avea valoarea 6. Cum bucla pentru merge doar pân  la 3, prima interschimbare
va  între valoarea de pe pozit, ia 1 s, i 5 (6-1), apoi 2 s, i 4, respectiv 3 cu 3. Deci la a doua bucl  pentru vor  as, ate
valorile 5 4 3 2 1 6 (ultima valoare nu se interschimb )

5. a
Trebuie c utate în matrice valorile care au deasupra s, i dedesubt valori mai mici cu 1 (modulo 3 - num r pozitiv) s, i la
stânga s, i dreapta valori mai mari cu 1 (modulo 3).
2 0 0 0 0 2 0
2 2 1 2 1 2 2
0 1 0 0 0 2 2
2 2 0 1 1 1 2
1 0 1 0 0 2 0
2 2 2 1 2 1 2
1 0 1 0 1 2 1

6. d
Comanda return fort, eaz  ies, irea din funct, ie înainte de a  executat  s, i instruct, iunea de dup  apel. Mai mult, este necesar
a se observa ca adunarea din return nu are efect asupra valorilor de as, at. Astfel, prima valoare as, at  este valoarea lui
n (adic  10), apoi 9 8 7 6 5 4 3 2 1. Pentru n=0, se intr  pe ramura adev rat a funct, iei s, i se as, eaz  valoarea 0. Toate
as rile sunt eectuate doar de instruct, iunea cout dinainte de return n+funct, ie(n-1).

7. b
În situat, ia în care init, ializarea elementelor unui tablou nu este completa (nu sunt precizate valorile tuturor membrilor
tabloului) acestea din urm  vor  init, ializate cu valoarea 0.

8. d
Cele trei puncte sunt situate în coordonatele (3,3), (1,4), (3,1) - notate cu x în matricea de mai jos.
0 0 0 x
1 0 1 1
x 0 x 1
1 0 0 0

Drumul de lungime minim  este:


- de la (1,1) la (1,4) (lungime 3)
- de la (1,4) la (3,1) (lungime 5)
- de la (3,1) la (3,3) (lungime 2)
- de la (3,3) la (4,4) (lungime 2)
Lungime total : 3 + 5 + 2 + 2 = 12.

8
9. a
Dup  primele dou  operat, ii de ADD matricea rezultat  este:

8 0 0 0 0
0 0 10 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

SUM(1,3) => suma elementelor încercuite: 8


Dup  urm toarele dou  operat, ii de ADD matricea rezultat  este:

8 0 0 0 0
0 4 10 0 0
0 6 0 0 0
0 0 0 0 0
0 0 0 0 0

SUM(3,2) => suma elementelor încercuite: 18


UNDO(2) => anuleaz  ultimele 2 operat, ii de ADD Dup  urm toarea operat, ie de ADD matricea rezultat  este:

15 0 0 0 0
0 0 10 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

SUM(3,2) => suma tuturor elementelor încercuite: 25 UNDO(3) => anuleaz  mai întâi ultima operat, ie de ADD, apoi
efectul operat, iei UNDO(2) s, i înc  o operat, ie de ADD

8 0 0 0 0
0 0 10 0 0
0 6 0 0 0
0 0 0 0 0
0 0 0 0 0

SUM(4,4) => suma tuturor elementelor încercuite: 24


10. c
int a [ 1 0 ] , i , smax , sc , p , pc , u ;
for ( i = 0 ; i < 1 0 ; i ++)
c i n >> a [ i ] ;
smax = a [ 0 ] ; s c = a [ 0 ] ; p = 0 ; u = 0 ; pc = 0 ;
for ( i = 1 ; i <= 9 ; i ++)
{
i f ( s c > 0 ) s c += a [ i ] ;
else
{
s c = a [ i ] ; pc = i ;
}
if ( s c > smax )
{

9
p = pc ; u = i ; smax = s c ;
}
}
for ( i = p ; i <= u ; i ++)
c o u t << a [ i ] << " " ;
c o u t << e n d l ;
c o u t << "max= " << smax << e n d l ;

11. d
(int)(sqrt(n)).

12. c
Funct, ia calculeaz  h*suma a n elemente, unde h = log(n).

13. b
Comparat, iile se realizeaz  cu elementele 23, 66 s, i 70.

14. b
Regina 3 poate  plasat  doar dup  ce se face pasul înapoi ³i se replaseaz  regina 2 (Figura (b)). Celelalte guri reprezint 
mai multe operaµii.

15. b
Se calculeaz  suma tuturor elementelor S. => O(n) Se consider  dou  sume S1=0 suma elementelor dinainte pe pozit, ia
1 s, i S2= S-a[1]. Într-o singur  trecere, se compara S1 cu a[i] s, i cu S2, se decide dac  a[i] este corespunz tor sau nu, apoi,
înainte de a se trece la pasul i+1, se recalculeaz  S1=s1+a[i], S2=S2-a[i]. Deci se poate crea un algoritm de complexitate
O(n).

16. a
Se caut  în matricea M liniile care au doar valori de 0. Toate aceste linii corespund sarcinilor care nu au dependent, e
s, i pot  duse la îndeplinire în acest punct. Apoi, se scot din matricea M liniile respective s, i coloanele corespunz toare
sarcinilor respective. Procesul se repet  pân  nu mai sunt sarcini de îndeplinit, sau exist  o dependent,   circular  între
sarcini (caz în care nu pot  îndeplinite toate sarcinile).

17. a
Un graf conex n vârfuri este arbore dac  s, i numai dac  este conex s, i are n − 1 muchii. Not m cu cu ni num rul vârfurlor
Pi=k Pi=k
s, i cu mi num rul muchiilor componentei conexe Ci , i = 1, . . . , k . Avem n = i=1 ni s, i m = i=1 mi . Din componenta
Pi=k
Ci trebuie eliminate mi − ni + 1. Rezult  c  num rul muchiilor eliminate va  i=1 (mi − ni + 1) = m − n + k .

18. b
Evident, o groap  i poate exista dac  A = {(j, i)/j 6= i}. Presupunem c  ar exista dou  gropi i1 s, i i2 . i1 ind ,
groap 
arcul (i2 , i1 ) ∈ A s, i arcul (i1 , i2 ) ∈
/ A. Similar, i2 ind groap , arcul (i1 , i2 ) ∈ A s, i arcul (i2 , i1 ) ∈
/ A . Imposibil.

19. a
Se demonstreaza prin induct, ie dup  n c  num rul nodurilor complete este egal cu num rul frunzelor minus 1

10
20. b
Pentru m = 3 s, i n = 5 se obt, ine o ret, ea care are:
- pe nivelul 0 nodurile: 0/1 s, i 1/0
- pe nivelul 1 nodul: 1/1
- pe nivelul 2 nodurile: 1/2 s, i 2/1
- pe nivelul 3 nodurile: 1/3, 2/3, 3/2 s, i 3/1
- pe nivelul 4 nodurile: 1/4 , 2/5, 3/5 , 3/4, 4/3 , 5/3, 5/2 s, i 4/1
Fract, ia c utat  se a  pe nivelul 4, drumul parcurs din nodul 1/1 pân  la aceasta se codic  astfel: DSD.
Ret, eaua asociata este cea din gura de mai jos:

21. d
Se deseneaz  graful s, i, vizual, se determin  drumul minim de la toate nodurile i la toate nodurile j, unde i < j. Rezultatul
este maximul valorilor rezultate.
O alt  variant  de resolvare este construirea matricei de costuri s, i aplicarea algoritmului FloydWarshall de determinare
a drumului minim între oricare dou  vârfuri din graf. Rezultatul este maximul din matricea de costuri rezultat  aplic rii
algoritmului.
Maximul drumurilor minime este 8, prin vârfurile 3-5-4.

22. b
Funct, ia întoarce ((1 + 2 . . . + x-1 + x) +y), adic  x(x+1)/2 + y.

23. b
Deoarece r=10, funct, ia întoarce suma cifrelor: 3 + 4 + 5 = 12

24. c
Când se apeleaz  funct, ie(4), chiar la intrearea in funct, ie se as, eaz  primul semn #. Pentru c  init, ial n este diferit de 0,
se va as, a valoarea lui n, 4 apoi numerele de la 0 la 3 din bucla for, Se apeleaza funct, ie(3) urmat de as, area unui nou #
(de la intrarea in funct, ie) , num rul 3 s, i apoi valorile de la 0 la 2, Se apeleaza funct, ie(2) se aseaz  #, 2 s, i valorile de la
0 la 1 Se apeleaza funct, ie(1) se aseaz  #, 1 s, i valoarea 0 Se apeleaza funct, ie(0) se aseaz  #, s, i pentru c  neste 0, se
as, eaz  înc  un # de pe ramura else. Dupa aceasta se vor asa înc  4 semne # pentru instrct, iunea de as, are de dup 
apelul recursiv. În total 10 semne #

25. b
Dimensiunea oricarei stive poate  mai mare decat MAXSIZE/2. Ambele stive isi maresc dimensiunea pornind din ambele
capate s, i dac  vârful uneia ajunge lâng  vârful celeilalte, atunci stivele sunt pline. Astfel, condit, ia va  top1=top2-1

11
R spunsurile corecte cu explicatii ,

1. d
char s i r [ ] = " admitere " ;
for ( int i = 1; i <= 3 ; i ++)
{
strcpy ( s i r + 1, sir + 2);
}

c o u t << s i r << e n d l ;

2. c
struct punct trebuie urmat  de numele unei variabile.

element este un vector de tip _element, deci nu poate  tip de date

int x, y;
c i n >> x ;
y = x;
while ( x <= 3 )
{
c o u t << " * " ;
y = y + 1;
x = x + y;
}

4. d
5. a
Se iau valorile din r spunsuri pe rând s, i se urm res, te codul dat pentru ecare pas al instruct, iunii repetitive.

6. a
În variabila admitere2021 de tipul structurii examen este denit un vector de candidat, i. Deci accesul la un element al
vectorului (un anumit candidat) se face prin indicele elementului respectiv, cu admitere2021.c[i].

7. b
A 0100 0001 nu se va modica n 0110 1110 cel mai lung sir de 1. va modica primii 2 de 1 in 2 de 0 r 0111 0010 se va
modica ultimul 1 e 0110 0101 nu se va modica a 0110 0001 nu se va modica p 0111 0000 se va modica ultima pozitie

Ana - se modica 2 cifre binare are - se modica 1 cifr  binar  apa - se modica 1 cifr  binar 

8. d
Condit, ia veric  relat, ia dintre valorile primului element s, i a ultimului element din tablou: '4' s, i '2'. Deoarece condit, ia
vericat  este adev rat , se actualizeaz  s[1] prin incrementarea valorii sale curente. s[1] devine '2'.

9. a
Codul furnizat face suma elementelor de pe ultima coloan .

10. c
Funct, ia parcurge toate elementele matricii care reprezint  parcelele terenului. Pentru ecare parcel  se veric  dac 
valoarea lucr rilor este cuprins  în intervalul [a, b]. Dac  vericarea condit, iei este adev rat  se decrementeaz  valoarea
ce va  retunrnat . Init, ial, aceast  valoare (variabila local  ret) este egal  cu num rul elemenelor matricii.

8
11. a
Codul furnizat schimb  elementul de pe diagonala principal  cu cel din dreapta sa. Elementul de pe ultima linie s, i ultima
coloan  va  schimbat cu elementul de pe pozit, ia [0][0], care a fost schimbat în 2 la prima trecere prin for.

12. c
Matricea C este produsul cartezian al liniilor din matricile A si B deci nK linii rezultate.

13. c
Num rul de elemente ale mult, imii C este egal cu 24 · 24 = 576. Prima parte a condit, iei ltreaz  jum tate dintre perechi
(r mân doar perechile de elemente ale c ror sum  este par , adic  a s, i b par, sau a s, i b impar), iar cea de-a doua ltreaz 
jum tate din jum tatea r mas  (r mân doar perechile pentru care m car una dintre valori este par , adic  a par sau b
par). Num rul de elemente care satisfac condit, ia este egal cu n/4 = 576/4 = 144.

14. b
Cuvintele generate care încep cu litera l ³i se termin  cu litera o: lilo, limo, lino, lllo, llmo, llno, lmlo, lmmo, lmno, lnlo,
lnmo, lnno, lolo, lomo, lono

15. a

16. b
17. a
O funct, ie injectiv  poate  asociat  cu un aranjament.

18. b
Pentru a rezolva problema trebuie întâi determinat  prima suprapunere a celor trei ace ale ceasului. Acest lucru se poate
realiza determinând suprapunerile orarului cu minutarul s, i a minutarului cu secundarul.

Dac  consideram ca x este num rul de ore din jum tate de zi, adic  n/2, s, i y este num rul de minute dintr-o ora, adic 
m, atunci: - viteza de deplasare a orarului (vo) într-o ora este: 360/x (grade/ora) - viteza de deplasare a minutarului
(vm) într-o ora este: 360 (grade/ora) - viteza de deplasare a secundarului (vs) într-o ora este: 360*y (grade/ora)

Într-o ora orarul parcurge o distanta d, iar minutarul d+360 => do = dm - 360.

Deoarece d=v*t, relat, ia de mai sus devine: t*360/x = t*360 - 360 => t = x/(x-1).

Astfel, prima întâlnire a orarului s, i a minutarului este dup  x/(x-1) ore.

Deci periodicitatea cu care se întâlnesc orarul s, i minutarul este x/(x-1). În mod analog se determina periodicitatea cu
care se întâlnesc minutarul s, i secundarul: 1/(y-1).

Problema se rezuma la a g si toate suprapunerile orar-minutar s, i de a verica dac  nu cumva coincide cu suprapunerea
minutar-secundar.

Ceea ce înseamn  c  trebuie determinate toate perechile k1, k2 (numere naturale) astfel încât: k1*x/(x-1)=k2/(y-1).

Dac  încerc m pentru tot, i k1 începând cu 1 s, i mai mici decât n, atunci g sim o suprapunere a celor trei ace dac  x * k1
* (y - 1)) se divide la (x - 1).

Prima valoare k1 care îndeplines, te condit, ia de mai sus ne da timpul primei suprapuneri, k1*x/(x-1), iar num rul total
de suprapuneri dintr-o zi este calculat ca ind 2*x/(k1*x/(x-1)).

19. c
Pn
Suma gradelor tuturor nodurilor unui garf neorientat este egal  cu dublul num rului de muchii: i=1 di = 2 · m, unde n
reprezint  num rul de noduri din graf, di gradul nodului i, iar m num rul de muchii din graf.

20. d
2 componente conexe: nodurile pare si cele impare.

9
21. c
Se formeaz  dou  subgrafuri complete, cu noduri cu identicatori pari, respectiv impari. Exist  s, i câte o muchie între
orice noduri cu identicatori de forma< 2k, 2k + 1 > (din subgraful par, respectiv impar), cu ment, iunea c  nodul 1 (din
n (din subgraful par) nu formeaz  pereche cu nici un nod din cel lalt subgraf: total n2 − 1 astfel
subgraful impar) s, i nodul
n n
de muchii. Pentru a izola nodul 1 sau n trebuie t iate
2 − 1 muchii. Pentru a izola un nod 2, 3, ..., n − 1 trebuie t iate 2
n
muchii. Pentru a izola cele dou  subgrafuri trebuie t iate
2 − 1 muchii.

22. a
În graful G ecare vârf trebuie s  aib  grad par. Un graf complet cu num r impar de vârfuri îndeplines, te aceast  condiit, ie.
Evident, un cicilu cont, ine cel put, in 3 vârfuri, deci n trebuie sa e mai mare decât 2.

23. a
24. c
Funct, ia realizeaz  num rarea caracterelor litere din s, irul de caractere primit prin primul parametru. Al doilea parametru
este indexul maxim din s, ir pân  la care se face num rarea. S
, irul este parcurs în sens descresc tor s
, i atunci când caracterul

de pe pozit, ia curent  este liter  se adun  1 la valoarea returnat , altfel nu se adun  nimic.

25. c
La primul apel n>0, deci va intra in primul if, apoi la al doilea if, n mod 10=1, dar 1 nu este mai mare ca 1(valoarea lui
m), deci nu se va intra in acest if. Se va reapela functia cu valorile f(1232,1), cum restul împ rt, irii lui n ma 10 este 2>1,
se va intra in if si m va devein 2. Pe ecran se va asa 2. La apelul urmator (f123,2) 3>2, se va asa 3 apoi m=3. La
apelurile f(12,3), apoi f(1,3) valoarea lui m ramane 3 intrucat nici 2 nici 1 nu sunt mai mari ca 3. La asarea nala, m
va ramane 3 pt toate cele 5 asari intrucat m este transmis prin referinta, deci ultima valoare avuta se va pastra.

10
R spunsurile corecte cu explicatii ,

1. a
În variabila admitere2021 de tipul structurii examen este denit un vector de candidat, i. Deci accesul la un element al
vectorului (un anumit candidat) se face prin indicele elementului respectiv, cu admitere2021.c[i].

2. d
3. b
"... daca si numai daca...". Trebuie sa e adevarata si reciproca.
c) este adevarata si pentru numere naturale de semn opus dar de acelasi modul
d) este adevarata pentru y < x
a) nu este adevarata pentru x=y: A s, i A

4. a
Codul furnizat înlocuies, te caracterul de pe pozit, ia i+1 cu caracterul de pe pozit, ia i. Se vor as, a 11 de A pentru ca la
ecare pas al for-ului un alt caracter din s, irul init, ial devine A.

5. b
Pe ecare linie matricea contine respectiv 1, 2, 4, 8, 16, 32, 64 de X.
In total 127 de X.
Dimensiunea matricei este 7X65=455.
Rezulta 455-127=328 de O.

6. b
Functia se autoapeleaza de 5 ori cu argumentele: 7,2,5; 7,2,6; 7,3,4; 7,3,5; 7,3,6.

7. a
Codul furnizat adun  elementele de deasupra diagonalei principale, pe ecare linie în parte. Elementele diagonalei
principale sunt considerate la calcului ec rei sume.

8. a
Codul furnizat schimb  din liter  mare în liter  mic  acele caractere pentru care este respectata condit, ia din for. Aceast 
condit, ie este respectat  doar pentru caracterul C.

9. a
Robotul trebuie s  efectueze init, ial act, iunile: deplasareInainte(), rotireDreapta(), deplasareInainte(), rotireStanga().
De aici deducem c  act, iunea 1 trebuie s  e deplasareInainte(), iar prima dat  se rotes, te la dreapta, apoi la stânga, apoi
la derapta, etc., ceea ce înseamn  c  act, iunea 2 este rotireDreapta() s, i act, iunea 3 este rotireStanga(). Act, iunea 4 nu
este necesar , iar, la nalul buclei, robotul este înainte de punctul de nal F s, i este orientat spre dreapta; deci act, iuna 5
este deplasareInainte().

10. d
11. a
Pentru ecare liter  putem avea maxim 10 etichete diferite între ele. De exemplu, {a0, a1, a2, . . . , a9}. Rezult  5 × 10
etichete.

12. a
Primul for execut  n iterat, ii. Al doilea for înjum t t, es, te intervalul la ecare iterat, ie, pornind de la n => complexitate
logaritmic . Prin urmare, complexitatea de timp este O(n ∗ log(n)).

13. b
k−1
Relat, ia de recurent,   este Cnk = Cn−1 k
+ Cn−1 .

8
14. b
Descompunerea in factori primi a valorilor de intrare x si y, numarand aparitiile factorilor (divizorilor) comuni (inclusiv
repetarile aceluiasi divizor).

Pentru x=720 si y=495 avem divizorul comun 3 apare de 2 ori, divizorul comun 5 apare o singura data. ==> Rezultatele
asate vor  : nr=3, x=16, y=11

int x, y;
c o u t << " v a l pt x si y ";
c i n >> x >> y ;
int n r = 0 , d = 2;
while ( d <= x && d <= y )
{
if ( x%d == 0 && y%d == 0 )
{
n r ++;
x = x / d;
y = y / d;
}
else d++;
}
c o u t << n r << " " << x << " " << y ;

15. a
O funct, ie injectiv  denit  pe A cu valori în B poate  considerat  un aranjament format din n elemente ale mult, imii B.

16. c

17. d
Num rul de subgrafuri ale unui graf cu n noduri este: 2n − 1

18. d
Pentru a avea acelas, i num r de componente conexe, noile muchii se pot ad uga doar la nivelul acestora, pân  când acestea
devin subgrafuri complete. Num rul minim de muchii pentru o component  conex  cu n noduri este n − 1 (lant, care
n(n−1)
cont, ine toate nodurile). Num rul maxim de muchii pentru o component  conex  cu n noduri este
2 (graf complet).
3(3−1) 4(4−1) 5(5−1)
R spunsul este:
2 + 2 + 2 − 2 − 3 − 4 = 10.

19. a
Graful nu va  conex, NU rezulta tot un arbore, NU rezult  un ciclu si NU rezult  dou  noduri izolate

20. c
n
Se formeaz  dou  subgrafuri complete, cu noduri cu identicatori pari, respectiv impari. Fiecare subgraf are
2 noduri s, i
n n
2 ( 2 −1) n n
2 muchii. Num rul total de muchii în cele dou  subgrafuri este: (
2 2 − 1) . Exist  s, i câte o muchie între orice noduri
cu identicatori de forma < 2k, 2k + 1 > (din subgraful par, respectiv impar), cu ment, iunea c  nodul 1 (din subgraful
n
impar) s, i nodul n (din subgraful par) nu formeaz  pereche cu nici un nod din cel lalt subgraf: total
2 − 1 astfel de muchii.
2
n n n n
Prin urmare, num rul total de muchii este:
2 ( 2 − 1) + 2 − 1 = 4 − 1. Num rul minim de muchii care trebuie s  r mân 
pentru ca graful s  e format dintr-o singur  component  conex  este n − 1. Prin urmare, num rul maxim de muchii care
n2 n2
pot  t iate astfel încât graful G s  r mân  format dintr-o singur  component  conex  este:
4 − 1 − n + 1 = 4 − n.

21. c
22. a
Funct, ia de validare de la problema damelor.

9
23. b
Se aduna x la el insusi de y ori: x*y.

24. b
Doar variabila m poate  extras  din funct, ie. Acesta contorizeaz  num rul de cifre ale lui n scris in baza b care sunt
diferite de 0.

25. a
Cele dou  bucle for îmbricate genereaz  toate perechile de elemente (teste) în care primul element este din tabloul test1 s, i
al doilea element este din tabloul test2. Pentru ecare pereche se veric  dac  cele dou  teste au fost sust, inute de acelas, i
elev prin evaluarea egalitat, ii cîmpului cod din structurile care se comapr . Pentru coduri egale, se veric  în continuare
dac  notele la cele dou  teste sunt ambele mai mari sau egale cu 5.

10

S-ar putea să vă placă și