Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
(a) 110 (b) 010 (c) La compilare vor ap rea erori (d) 00
(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
1
void f ()
{
static int k = 4;
i f (−−k )
{
f ();
c o u t << k << " " ;
}
}
int main ( )
{
f ();
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 ) ;
}
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;
}
4
i = i + 1;
else
j = j − 1;
}
return v[ i ];
}
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);
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)
,
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
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);
}
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.
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 )
(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 ;
}
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 ) ;
(a) s = 10
(b) s = 15
s = 30
s = 45
(c) s = 15
(d) s = 20
(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 } ;
(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 ] ;
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
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;
, ,
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;
}
}
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
dac x = y atunci
returneaz x + y
altfel
returneaz 1 + f(x + 1, y − 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 )
(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)))
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 ;
(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 ;
}
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)
,
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;
7
22. Fie urm toarele declarat, ii:
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;
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
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 )
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))
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;
}
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 execut
as, eaz a[i]
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;
}
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
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 ;
}
}
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);
}
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;
}
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
c o u t << sir ;
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 ] ;
1. struct punct ;
2. struct _element elem ;
3. _element el ;
4. element x;
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
y ← x;
cât timp x <= 3 execut
scrie0 ∗0 ;
y ← y + 1;
x ← x + y;
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 ]<< ' ' ;
(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 ;
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
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 ] ;
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;
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.
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
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
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 ...;
}
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::
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 ?
21. Fie G un graf neorientat cu n noduri. Fiecare nod are un atribuit un identicator 1, 2, ..., n. În graf exist muchii:
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 ?
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:
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.
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:
7
Universitatea Tehnic "Gheorghe Asachi" din Ias, i
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 ;
1
return 0;
}
int function1 ( int k)
{
k++;
return k;
}
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
(c) x*x==y*y
c o u t << t e x t ;
Ce se va as, a pe ecran?
5. Se consider o matrice M cu 7 linii care cont, ine doar elemente de 0 s, i X. Matricea se completeaza astfel:
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.
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
,
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
c o u t << t e x t ;
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 .
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 .
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?
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?
int i , j , k ;
for ( i = 0 ; i < n; i ++) {
k = n;
for ( j = 0; j < k; j ++) {
k = k / 2;
}
}
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 ] = ...
}
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 :
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)
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?
19. Dac se elimin o muchie dintr-un arbore complet cu cel put, in dou niveluri se obt, ine:
20. Fie G un graf neorientat cu n noduri. Fiecare nod are un atribuit un identicator 1, 2, ..., n. În graf exist muchii:
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 ;
}
6
(a) x+y (b) x*y (c) x + x*y (d) xy
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 ; }
}
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?
7
R spunsurile corecte cu explicatii ,
1. a
În C/C++ orice valoare nenul este asimilat cu valoarea logic ADEVRAT (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)
i d i n i t Q ( queue &Q)
Q. head = Q. t a i l = 0 ;
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))
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 ADEVRAT 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 ;
}
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
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
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
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
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.
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).
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