Sunteți pe pagina 1din 3

Examen scris – ALGORITMI FUNDAMENTALI

Subiect 1 - Aplicatii (45 puncte)


1. (5 p) Sa se scrie subprograme pentru:
a. Testarea daca un numar dat ca parametru are numarul de cifre pare egal cu numarul de
cifre impare.
Metoda returneaza “true“ daca se indeplineste conditia si “false” daca nu.
b. Determinarea mediei aritmetice a elementelor cu prima cifra 8 dintr-un vector de
dimensiune data.
Pentru fiecare subpogram se precizeaza si maniera de apelare (un main() corespunzator)
2. (7.5 p) Se considera o stiva implementata folosind un vector. Operatiile definite pentru stiva sunt
push si pop. Totusi, cand se adauga un element in stiva (push) si vectorul este plin, trebuie sa se
aloce un nou vector si sa se copieze elementele din vectorul vechi in cel nou, iar apoi se va folosi
vectorul nou pe post de stiva.
a. sa se implementeze metodele precizate
b. Care este complexitatea operatiilor push si pop in cazul cel mai defavorabil? Justificati.
c. Scrieti o functie/metoda avand ca argument un numar intreg pe care il afiseaza vertical,
folosind metodele implementate mai sus.
3. (2.5 p) Se da urmatorul subprogram:

Subprogram functie(a,b):
daca a>1 atunci
returneaza b*f(a-1,b)
altfel
returneaza b*f(a+1,b)
sfarsitDaca
sfarsitSubprogram

Precizati de cate ori se apeleaza functia f in urmatoarea secventa de cod:


X<- 4
Y<- 3
Z<- f(x,y)
Justificati raspunsul.
4. (2.5 p) Se considera o matrice de 8 linii, formata doar din elemente de 0 si 1. Matricea are
urmatoarele proprietati: prima linie contine un singur element cu valoarea 1, linia j contine de doua
ori mai multe elemente nenule decat linia j-1, pentru orice j=2,…,8, ultima linie contine un singur
element cu valoarea 0.
Care este numarul total de elemente cu valoarea 0 din matrice? Justificati.

5. (5 p) Se considera doua numere naturale p si q (2<=p, q<=10).


Un numar natural se numeste magic daca multimea cifrelor utilizate in scrierea lui in sistemul de
numeratie avand baza p este identica cu multimea cifrelor folosite in scrierea lui in sistemul de
numeratie avand baza q.

AF - 2019
Scrieti un program care pentru cele doua baze p si q date determina sirul x al tuturor numerelor
magice strict mai mari ca 0 si strict mai mici decat un numar natural n dat.
Exemplu:
p = 9 si q = 7, (31)10 este numar magic pentru ca (34)9 = (43)7
p = 3 si q = 9, (9)10 este numar magic pentru ca (100)3 = (10)9
p = 9, q = 7 si n = 500, sirul x va avea k = 11 elemente: (1, 2, 3, 4, 5, 6, 31, 99, 198, 248, 297)

6. (10 p) Un robot sare de pe o clădire pe alta, aflată în imediata vecinătate, în nord, est, sud sau vest.
Clădirile din cartierul robotului au o înălţime exprimată în numere naturale şi sunt aşezate pe m
rânduri, câte n pe fiecare rând. Robotul va alege să sară pe una dintre clădirile vecine, care are
înălţimea mai mică sau egală, iar diferenţa de înălţime este minimă. Dacă există mai multe clădiri
vecine de aceeaşi înălţime, robotul aplică ordinea preferenţială nord, est, sud, vest, dar nu sare încă
o dată pe o clădire pe care a mai sărit. Scopul robotului este acela de a reuşi să facă un număr
maxim de sărituri succesive.
Cerință: Scrieţi un program care determină numărul maxim de sărituri succesive, pe care îl poate
efectua, pornind de la oricare dintre clădiri, precum şi coordonatele cladirii care reprezinta punctul
de start pentru drumul maxim.
Date de intrare:
n, m: 1<= n, m <= 100
a –matricea cu n linii si m coloane reprezentând înălţimile clădirilor înălţimile clădirilor (valorile
matricii) sunt numere naturale din intervalul [1,10000]
Date de ieşire:
numărul maxim de sărituri, coordonatele (i,j) ale punctului de start
Exemplu:

7. (2.5 p) Se citeste un vector A cu n (n<=1000) elemente numere naturale.


Afisati numarul de perechi de elemente din vector care au suma divizibila cu n.
Exemplu: n = 4, A = {2, 6, 8, 10} => 3 perechi, adica perechile (2, 6) , (2, 10) si (6, 10)
8. (2.5 p) Care este secventa de numere care urmeaza dupa: 1, 11, 21, 1211, 111221? Justificati
rationamentul folosit (in cuvinte, fara cod)
9. (2.5 p) Semafoarele din trei intersecții diferite din centrul orașului își schimbă culoarea după fiecare
48, 72 și 108 secunde. Dacă cele trei semafoare își schimbă simultan culoarea la ora 8 dimineața,
la ce altă oră își vor mai schimba simultan culoarea?
10. (5 p) Fie un număr n, se definește gradul numărului n ca fiind numărul de secvențe "101" din
reprezentarea binară a acestuia. Sa se scrie o metoda care afiseaza gradul unui numar n, dat ca
parametru.
Exemplu: numărul 21 are gradul 2 (reprezentarea binară a lui 21 este 10101).

AF - 2019
Subiect 2 - Teorie (45 puncte)
1. (5 p) Comparati metoda Greedy si metoda Programarii Dinamice. Pentru fiecare dintre metodele
de programare sa se ofere un avantaj principal si un dezavantaj principal.
2. (5 p) Alegeti 3 metode de sortare si comparati-le din punct de vedere: maniera de functionare,
complexitate si generalitate.
3. (2.5 p) Folositi sortarea prin bule pentru a sorta crescator urmatorul sir: 3 6 2 7 4 1 5
a. Cate interschimbari se fac?
b. Cate comparatii se fac in total?
4. (5 p) Sa se inmulteasca eficient urmatoarele numere intregi: n=67478, m=564. Precizati maniera in
care s-a facut aceasta operatie, precum si toate iteratiile parcurse.
5. (5 p) Sa se demonstreze veridicitatea urmatoarelor relatii:
a. n2-n=O(n)
b. 200+sin(n)= θ(1)
6. (2.5 p) Ce este o functie recursiva? Explicati modul de functionare.
7. (5 p) Definiti urmatoarele notiuni: algoritm, variabila, iteratie, subprogram, memoizare.
8. (5 p) Sa se scrie expresii regulate pentru:
a. identificatorii care incep si se termina cu literele {a, A}
b. cuvinte peste alfabetul {0,1,2} care se termina in numar impar de 2
9. (5 p) Ce inseamna o abordare top-down si una bottom-up? Care este legatura dintre aceste abordari
si fiecare dintre metodele Divide et Impera, Greedy si Programare Dinamica.
10. (5 p) Ce este un agent inteligent? Exemplu.

Observatii:
1. Procentul examenului scris este de 60%.
2. Conditia de promovabilitate este ca din “Subiect 1 – Aplicatii” sa fie insumate minim
22.5 puncte
3. Pentru rezolvarea aplicatiilor se poate utiliza pseudocod sau se pot utiliza limbajele
de programare C/C++/Python.
4. Se pot utiliza biblioteci, in cazul in care este cunoscut codul de integrare si
implementare.
5. Nu trebuie neaparat folosita alocarea dinamica, dar, daca se foloseste, se corecteaza
doar un cod coerent.

Se ofera 10p Oficiu.

AF - 2019

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