Documente Academic
Documente Profesional
Documente Cultură
BAREM de corectare
Oficiu = 10p
Subiectul I = 30p
Subiectul II = 30p
Subiectul III = 30 p
Subalgoritmii pentru:
a. Verificarea dacă un număr este prim = 10p;
b. Determinarea celui de-al m-lea număr prim = 10p;
c. Tipărirea matricei = 3p;
Programul pentru rezolvarea problemei = 7p.
Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu. Timpul efectiv de lucru este
de 3 ore.
Se dă următorul algoritm:
Se cere:
Citeste n; a) Ce se va afişa dacă se citesc valorile:
s 0; 5, 222, 2043, 29, 2, 20035?
Pentru i1,n executa
nr 1; b) Determinaţi un set de date de intrare astfel încât
Citeste x; valoarea afişată să fie egală cu suma numerelor
Cattimp x>9 executa citite.
nr nr*10; c) Scrieţi o secvenţă de instrucţiuni echivalentă care
x[x/10]; să utilizeze structura repetitivă Repeta în locul
SfCattimp; structurii Câttimp.
s s+x*nr;
SfPentru;
Tipareste s;
Se vor folosi subprograme pentru: citirea unui şir, determinarea cifrelor unui număr, verificarea
dacă un număr este palindrom, construirea şirului Y şi tipărirea unui şir.
Programul se poate scrie într-unul dintre limbajele studiate la liceu (Pascal, C++ etc). Folosiţi
comentarii pentru a uşura înţelegerea soluţiei date (explicarea semnificaţiei identificatorilor folosiţi,
descrierea detaliilor de implementare etc).
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
BAREM de corectare
Oficiu = 10p
Subiectul I = 30p
Subiectul II = 30p
a) 10p;
b) 10p;
c) 10p.
Subiectul III = 30 p
Subprograme pentru:
a. Citire şir = 2p;
b. Determinarea cifrelor unui număr = 5p;
c. Verificare palindrom = 5p;
d. Construire şir Y ordonat = 8p
(construire şir Y neordonat + ordonare = 4p)
e. Tipărire şir = 2p;
Programul pentru rezolvarea problemei = 5p.
Stil de programare = 3p
Toate subiectele sunt obligatorii. Se acorda 10 puncte din oficiu. Timpul efectiv de lucru este de 3 ore.
a). Ce înţelegeţi prin căutare binară? Precizaţi deosebirea dintre căutarea secvenţială şi căutarea
binară.
b). Definiţi noţiunile de parametri formali şi parametri efectivi (actuali). Daţi exemple sugestive.
c). Ce înţelegeţi prin interclasare? Scrieţi un algoritm care interclasează două şiruri ordonate şi
discutaţi complexitatea lui.
Se dă următorul algoritm:
Citeşte n,x Se cere:
v0 a) Ce se va afişa dacă se citesc valorile? Indicaţi
i0 paşii efectuaţi pentru obţinerea rezultatului.
CâtTimp in execută 4 1 1 8 0 -4 -3
Citeşte a b) Ce se va afişa dacă se citesc valorile? Indicaţi
vv∙x+a paşii efectuaţi pentru obţinerea rezultatului.
ii+1 6 -1 -1 3 0 5 -2 4 -8
SfCâtTimp c) Determinaţi un set de date de intrare care începe cu
Tipăreşte v valoarea 3 astfel încât valoarea afişată să fie 0.
Se citeşte un şir X ( x1, x 2 ,...x n ) de numere naturale nenule. Să se scrie un program care
elimină din X secvenţele xi , xi 1 ,...xi l formate din numere asemenea şi formează un şir R cu numerele
distincte eliminate. Spunem ca două numere naturale sunt asemenea daca scrierile celor două numere
(în baza 10) au aceleaşi cifre (Ex.: 13133, 31 şi 3311 SUNT asemenea, iar 123 şi 6132 NU sunt
asemenea). La sfârşit se cere tipărirea sirurilor X şi R.
Exemple
Pentru şirul X = (15, 1316, 613, 1316, 4, 58, 85, 885) se va tipări X = (15, 4) şi R = (1316, 613, 58, 85,
885)
Pentru şirul X = (45, 4, 58, 853, 39) se va tipări X = (45, 4, 58, 853, 39) şi ‘R este şirul vid’
Se vor folosi subprograme pentru: citirea unui şir, verificarea dacă două numere sunt asemenea,
eliminarea unui subşir dintr-un şir, eliminarea secvenţelor de numere asemenea dintr-un şir,
construirea şirului R şi tipărirea unui şir precum şi alte subprograme necesare rezolvării problemei.
Programul se poate scrie într-unul dintre limbajele studiate la liceu (Pascal, C++ etc). Folosiţi
comentarii pentru a uşura înţelegerea soluţiei date (explicarea semnificaţiei identificatorilor folosiţi,
descrierea detaliilor de implementare etc).
UNIVERSITATEA BABEŞ-BOLYAI
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
BAREM
Corectare probă scrisă INFORMATICĂ
SUBIECT I
a) 8p
b) 8p
c) 14p
SUBIECT II
a) Se afiseaza valoarea 2. 7p
b) Se afiseaza valoarea -23. 7p
c) De exemplu: 3 1 1 -1 -1 1 16p
SUBIECT III
Programul se poate scrie într-unul dintre limbajele studiate la liceu (Pascal, C++ etc). Folosiţi comentarii pentru a
uşura înţelegerea soluţiei date (explicarea semnificaţiei identificatorilor folosiţi, descrierea detaliilor de
implementare etc).
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
BAREM
Corectare INFORMATICĂ
SUBIECT I
a) 8p din care
- complexitate durata de executare 2p
- complexitate spațiu de memorare 2p
- fiecare exemplu 2p
b) 10p din care
- noțiunea de subprogram de tip funcție 5p
- exemplu definire 3p
- exemplu apel 2p
c) 12p din care
– definire șir Fibonacci 3p
– algoritm 9p
(pentru soluție cu tablou se acordă maxim 4p)
SUBIECT II
SUBIECT III
Comisia de admitere
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu. Timpul efectiv de lucru este de 3 ore.
Se citeşte un şir X de numere naturale cu n elemente (1 ≤ n ≤ 500, 1 ≤ Xi ≤ 1000). Scrieţi un program care
determină şirul Y de numere prime distincte, care figurează la puterea întâi în cel puţin o descompunere ȋn factori
primi a unui număr din șirul X. Dacă nici un element al şirului X nu are un factor prim la puterea întâi, atunci se va
tipări mesajul ´Sirul Y e vid.´
Exemple:
n=4 n =4 n=4
X = (77, 58, 77, 31) X = (64, 36, 100, 125) X = (5, 25, 125, 625)
Y = (2, 7, 11, 29, 31) Sirul Y e vid. Y = (5)
Programul se poate scrie într-unul dintre limbajele studiate la liceu (Pascal, C++ etc). Folosiţi
comentarii pentru a uşura înţelegerea soluţiei date (explicarea semnificaţiei identificatorilor folosiţi,
descrierea detaliilor de implementare etc).
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
BAREM
Corectare INFORMATICĂ
SUBIECT I
a) 8p din care
– noțiunea de constantă 2p
– noțiunea de variabilă 2p
– deosebiri 1p
– exemplu constantă 1.5p
– exemplu variabilă 1.5p
b) 11p din care
– explicarea metodei de ordonare prin inserție 3p
– algoritm 8p
c) 11p din care
− descrierea ideii 2p
− algoritm 7p
− exemplu 2p
SUBIECT II
SUBIECT III
Subprograme: 22p
a). citirea unui şir 2p
b). generarea tuturor numerelor prime mai mici sau egale decât un număr dat
SAU
verificarea dacă un număr este prim 5p
c). verificarea dacă un număr figurează la puterea întâi în descompunerea
unui număr dat 5p
d). construirea șirului Y 8p
e). tipărirea şirului (inclusiv mesajul pentru şirul vid) 2p
Program principal 3p
Stil 5p
− comentarii, structurare, indentare, folosirea subprogramelor,
apelul corect al subprogramelor, comunicarea ȋntre subprograme și programul apelant
prin parametri.
Comisia de admitere
UNIVERSITATEA BABEȘ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ
a) Să se scrie o funcție care are ca parametri două numere naturale m și n și o matrice A(m, n) avȃnd
elemente numere ȋntregi și returnează numărul de elemente „șa” din matrice. Un element A(i, j ) din
matrice se numește element „șa” dacă este maximul de pe coloana j si minimul de pe linia i sau invers.
Spre exemplu, pentru m=2 și n=6 și
5 2 8 4 9 3
A
7 1 6 3 8 5
se va returna valoarea 2 (elementele „șa” sunt a12 și a 25 ).
b) Să se scrie o funcție care are ca parametru un număr natural n și returnează cel mai mare număr care
poate fi obținut mutȃnd, pe rȃnd, prima cifră a numărului n și a celor obținute pe parcurs, pe ultima
poziție. Nu se vor folosi șiruri de caractere și tablouri auxiliare. Spre exemplu, pentru n=4273 funcția va
returna valoarea 7342 (este cel mai mare număr dintre 2734, 7342, 3427, 4273).
c) Să se scrie două variante de implementare pentru o funcție care are ca parametri un număr natural n, un
șir crescător X de numere reale avȃnd n elemente și un număr natural v și care returnează poziția pe care
apare ȋn șir valoarea v. Ȋn cazul ȋn care v nu apare ȋn șir, se va returna valoarea -1. În cazul în care v
apare în șir pe mai multe poziții, se va returna una dintre acestea.
c1. Soluție iterativă.
c2. Soluție recursivă.
Se dă următoarea funcție care are ca parametri un număr natural n (n<100) un număr natural k (k<n) și
returnează o valoare naturală.
Funcția F(n, k) este Se cere:
Dacă (n<k) atunci a) Care va fi valoarea F(98, 1)? Justificați răspunsul.
returnează 0; b) Precizați valori pentru n și k astfel ȋncȃt F(n, k) să fie 2850.
altfel Justificați alegerea.
returnează n+F(n-1, k); c) Precizați care este efectul funcției.
SfDacă.
SfFuncție
Se citeşte o matrice A (aij )1in,1 j m de numere naturale nenule, unde 1 ≤ n,m ≤ 100, 1 ≤ aij ≤ 30000. Să se
scrie un program care construiește șirul X ( x1 , x2 ,..., xnm ) conținȃnd elementele matricei A ȋn următoarea
ordine: elementele de pe coloana 1, apoi de pe coloana 2,..., coloana m (de pe fiecare coloană elementele se
consideră ȋn ordinea crescătoare a liniilor). După construirea șirului X, se va afişa cea mai lungă secvență
xi , xi 1 ,...,xi p din șirul X avȃnd proprietatea că suma oricăror două numere situate pe poziții consecutive ȋn
secvență este număr „magic”. Un număr se numește „magic” dacă toate sufixele lui (inclusiv numărul) și prima
sa cifră sunt numere prime (293 nu e „magic” deoarece 93 e divizibil cu 3, dar 283 e „magic” deoarece 283,
sufixele lui 83, 3 şi prima sa cifră 2 sunt numere prime).
Exemple:
Programul se poate scrie într-unul dintre limbajele studiate la liceu (Pascal, C++). Folosiţi comentarii pentru
a uşura înţelegerea soluţiei date (explicarea semnificaţiei identificatorilor folosiţi, descrierea detaliilor de
implementare etc). Nu se vor folosi funcții sau biblioteci predefinite (de ex. STL, funcţii predefinite pe şiruri
de caractere, etc).
Notă: Toate subiectele sunt obligatorii. Rezolvările trebuie scrise detaliat pe foile de concurs (ciornele nu se iau
ȋn considerare). Se acordă 10 puncte din oficiu. Timpul efectiv de lucru este de 3 ore.
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
SUBIECT I
b) 10p
- signatura corectă 2p
- implementare 8p
b) 12p
- signatura corectă 2p
- implementare 10p
c) 13p
- signatura corectă 1p
- implementarea c1 6p
- implementarea c2 6p
SUBIECT II
SUBIECT III
Subprograme: 28p
a). citirea unui şir 1p
b). construirea șirului X din matricea A avȃnd n linii și m coloane 5p
c). verificarea dacă un număr este prim 3p
d). verificarea dacă un număr este „magic” 8p
e). determinarea secvenței de lungime maximă xi , xi 1 ,...xi p care ȋncepe pe poziția i 5p
f). determinarea unei secvențe de lungime maximă din șirul X avȃnd proprietatea cerută 5p
g). tipărirea unei secvențe xi , xi 1 ,...xi p . 1p
Program principal 2p
Stil 5p
comentarii, indentare, folosirea subprogramelor, apelul corect al subprogramelor,
comunicarea ȋntre subprograme și programul apelant prin parametri.
Comisia de concurs
UNIVERSITATEA BABEȘ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ
a) Un număr natural n se numește deosebit dacă există un număr natural m astfel ȋncȃt n m S (m) unde
S (m) este suma cifrelor lui m. Spre exemplu, n=15 este număr deosebit (m=12 și 15=12+3). Să se scrie
o funcție care are ca parametru un număr natural n și returnează adevărat sau fals, după cum n este sau
nu deosebit.
b) Să se scrie o funcție care are ca parametru un număr natural n și verifică dacă n are cel puțin un factor
prim care apare la o putere pară ȋn descompunerea sa ȋn factori primi. Spre exemplu, pentru n=12
condiția este verificată, deoarece 2 apare la puterea a 2-a ȋn descompunerea lui n ȋn factori primi. Pentru
n=6 condiția nu este verificată.
c) Să se scrie două variante de implementare pentru o funcție care are ca parametri un număr natural n, un
șir X de numere întregi avȃnd n elemente și verifică dacă elementele șirului X sunt distincte.
c1. Soluție iterativă.
c2. Soluție recursivă.
Nu se vor folosi funcții predefinite (de ex. funcţii predefinite pe şiruri de caractere, etc).
Se dă următorul algoritm:
Se cere:
Citeste n; a) Care este valoarea afișată de algoritm dacă numărul n citit este
x1; 91? Justificați răspunsul.
yn/2; b) Precizați o valoare naturală nenulă pentru n astfel ȋncȃt valoarea
Cat timp x 0 și y>0 executa
tipărită să fie 11. Justificați alegerea.
zn;
Cat timp zy executa c) Precizați care este efectul funcției ȋn condițiile ȋn care numărul
z z-y; n citit este natural nenul.
.
SfCatTimp
xz;
y y-1;
SfCatTimp
y y+1;
Tipareste y;
Se citeşte un șir X ( x1 , x2 ,..., xn ) de numere naturale nenule, unde 1 ≤ n ≤ 200, 1 ≤ xi ≤ 30000. Un element xi
situat ȋn șir pe poziția i (1 ≤ i ≤ n-1) se numește perfect dacă are cel puțin o cifră comună cu toate elementele
situate ȋn șir după el, xi 1 , xi 2 ,..., xn . Să se scrie un program care inserează ȋn șirul X, după fiecare element care
este perfect, divizorii săi proprii (divizorii se vor considera ȋn ordine descrescătoare). După modificarea șirului
X, se va construi șirul O (o1 , o2 ,...,ok ) conținȃnd ordinea ȋn care ar trebui afișate elementele șirului X pentru a
fi ȋn ordine descrescătoare. La final, se va tipări șirul X ȋn ordinea dată de O.
Notă. Nu se va face ordonarea șirului X.
Exemple:
se vor construi
X = (24, 5, 8, 4, 2, 218)
O (6,1,3,2,4,5)
și se va afișa 218,24,8,5,4,2
se vor construi
X = (24, 5, 4, 42, 6)
O (4,1,5,2,3)
și se va afișa 42,24,6,5,4
Programul se poate scrie într-unul dintre limbajele studiate la liceu (Pascal, C++). Folosiţi comentarii pentru
a uşura înţelegerea soluţiei date (explicarea semnificaţiei identificatorilor folosiţi, descrierea detaliilor de
implementare etc). Nu se vor folosi funcții sau biblioteci predefinite (de ex. STL, funcţii predefinite pe şiruri
de caractere, etc).
Notă: Toate subiectele sunt obligatorii. Rezolvările trebuie scrise detaliat pe foile de concurs (ciornele nu se iau
ȋn considerare). Se acordă 10 puncte din oficiu. Timpul efectiv de lucru este de 3 ore.
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
BAREM
SUBIECT I
b) 8p
- signatura corectă 2p
- implementare 6p
b) 12p
- signatura corectă 2p
- implementare 10p
c) 15p
- signatura corectă 1p
- implementarea c1 7p
- implementarea c2 7p
SUBIECT II
a) - Se returnează valoarea 13 3p
- Justificare 3p
b) – de ex. n=33 5p
- Justificare 4p
c) Efect – se tipărește cel mai mare divizor i (in) al lui n 5p
SUBIECT III
Subprograme: 28p
a). citirea unui șir 1p
b). verificarea dacă două numere au ce puțin o cifră comună 2p
c). verificarea dacă un element xi este perfect 6p
d). inserarea unei valori v pe o poziție dată ȋn șirul X 4p
e). adăugarea ȋn șirul X, după fiecare element perfect, a divizorilor săi proprii 6p
f). determinarea șirului O corespunzător șirului X 6p
g). tipărirea unui șir X ȋn ordinea dată de O 3p
Program principal 2p
Stil 5p
comentarii, indentare, folosirea subprogramelor, apelul corect al subprogramelor,
comunicarea ȋntre subprograme și programul apelant prin parametri.
Comisia de concurs
UNIVERSITATEA BABEŞ-BOLYAI
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
În atenția concurenților:
1. Rezolvările se vor scrie în pseudocod sau într-un limbaj de programare (Pascal/C/C++).
2. Primul criteriu în evaluarea rezolvărilor va fi corectitudinea algoritmului, iar apoi performanța din
punct de vedere al timpului de executare și al spațiului de memorie utilizat.
3. Este necesară folosirea comentariilor pentru a uşura înţelegerea rezolvării date (se va explica
semnificaţia identificatorilor și se vor descrie ideile principale pe care se bazează rezolvarea).
4. Nu se vor folosi funcții sau biblioteci predefinite (de exemplu: STL, funcţii predefinite pe şiruri de
caractere etc.).
Scrieți un subalgoritm care calculează numărul maxim de turnuri (nrTurnuri) care se pot construi respectând
regulile date, precum și numărul de monede (nrMonede) necesare construcției. Înălțimea n a celui mai înalt
turn este parametru de intrare al subalgoritmului, iar nrTurnuri și nrMonede vor fi parametri de ieșire.
Exemplu: dacă n = 3, atunci nrTurnuri = 7 și nrMonede = 11.
Scrieți un subalgoritm care inserează după fiecare element al șirului un nou număr care reprezintă cea mai
mare valoare mai mică sau egală cu acel element și care este o putere a lui 2. Șirul a și valoarea lui n sunt
atât parametri de intrare, cât și de ieșire pentru subalgoritm.
Exemplu: dacă n = 4 și a = (3, 1, 24, 9), atunci a va deveni (3, 2, 1, 1, 24, 16, 9, 8), iar n = 8.
Subiectul II (15 puncte)
Se dă următorul subalgoritm care are ca parametri de intrare două numere naturale a și b (0 < a ≤ 10 000,
0 ≤ b ≤ 10 000).
Subalgoritm F(a, b):
c 1
CâtTimp b > 0 execută
Dacă b mod 2 = 1 atunci { mod calculează restul împărțirii întregi a lui b la 2 }
c (c * a) mod 10
SfDacă
a (a * a) mod 10
b b div 2 { div calculează câtul împărțirii întregi a lui b la 2 }
SfCâtTimp
returnează c
SfSubalgoritm
, , , .
OFICIU............................................................................................................................................... 10 puncte
SUBIECTUL I ................................................................................................................................... 35 puncte
1. 1. Degustare de ciocolată .............................................................................................................. 20 puncte
V1: determinarea corectă a valorii nr (cu formula nr = n – n/cmmdc(n, k) ..................... 20 puncte
V2: determinarea corectă a valorii nr (simulare, listă circulară) ...................................... 10 puncte
2. Reducere ........................................................................................................................................ 15 puncte
parcurgerea în paralel a celor două șiruri ..................................................................................... 4 puncte
calculul sumelor parțiale cu elemente din șirul a și verificarea egalității
cu elementul curent din șirul b ................................................................................................. 4 puncte
identificarea subsecvenței (din șirul a) de lungime maximă ........................................................ 4 puncte
test dacă suma parțială curentă depășește elementul curent din b .................................................. 1 punct
test dacă s-a terminat parcurgerea elementelor din șirul a și suma parțială curentă
depășește elementul curent din șirul b ........................................................................................ 1 punct
test dacă, inițial, șirul b are mai multe elemente decât șirul a ........................................................ 1 punct
3
O solutie posibila:
#include <iostream>
using namespace std;
/*************************************************************************************
Subiectul I.1. Degustare de ciocolata
*************************************************************************************/
//calculeaza si returneaza cmmdc a 2 numere naturale a si b
int cmmdc(int a, int b){
if ((a == b) && (a == 0))
return 1;
if (a * b == 0)
return a + b;
while (b != 0){
int c = b;
b = a % b;
a = c;
} //while
return a;
}
//determina si returneaza nr de copii care nu primesc ciocolata dintre cei n copii
//numarand din k in k. Putem să consideram numaratoarea in cerc ca o numaratoare
//liniara in mai multe siruri mici, fiecare cu n copii, obtinând un sir mare cu
//p copii (p fiind multiplu de n). Numaratoarea se termina atunci cand al n-lea
//copil (dintr-un sir mic) primeste ciocolata (astfel, urmatorul copil care ar
//trebui sa primeasca ciocolata va fi un al k-lea copil din urmatorul sir mic),
//deci p trebuie sa fie si multiplu de k. Asadar, p = cmmmc(n, k). Dintre cei
//p copii, au primit ciocolată exct p / k copii, deci copiii fara ciocolata sunt
//in numar de
//nr = n - p/k = n - cmmmc(n,k)/k = n - (n*k/cmmdc(n,k))/k = n - n/cmmdc(n,k)
int degustareCiocolata(int n, int k){
return n - n / cmmdc(n, k);
}
/*************************************************************************************
Subiectul I.2. Reducere
*************************************************************************************/
//verifica daca sirul a cu n numere naturale se poate reduce la sirul b cu m numere
//naturale si determina pozitia k din sirul b care retine elementul obtinut prin
//insumarea elementelor din cea mai lunga subsecventa (de lungime nrMax) din sirul a
bool seReduce(int n, int a[], int m, int b[], int &k, int &nrMax){
if (n < m)
return false; // sirul a are mai putine elemente decat sirul b
int i = 0; // index in sirul a
int j = 0; // index in sirul b
int sum = 0; // se va incerca obtinerea, pe rând, a elementelor din sirul b
// ca suma de elemente consecutive din sirul a
int nrInsumate = 0; // numarul elementelor din subsecventa curenta
nrMax = 0; // numarul maxim de elemente din subsecventele sirului a
// ale caror suma este egala cu un element din sirul b
while ((j < m) && (i < n)){ // cat timp nu s-a terminat niciunul dintre siruri
sum += a[i];
nrInsumate++;
if (sum == b[j]){
if (nrInsumate > nrMax){
nrMax = nrInsumate; // daca este cazul, se actualizeaza nrMax si k
k = j;
}
nrInsumate = 0; // eventual, va urma o subsecventa noua
sum = 0;
j++; i++;
} //if
else{
if (sum < b[j])
i++;
else
return false;
} //else
} //while
if ((i < n) || (j < m)) // daca cel putin unul dintre cele doua siruri nu s-a epuizat
return false;
return true;
}
/*************************************************************************************
Subiectul II. Produsul a doua numere
*************************************************************************************/
//Subiectul II.a Numǎrul format din cifrele pare (p) și numărul format din cifrele
//impare (i) ale numărului n considerate de la stanga la dreapta
//Subiectul II.c
void cifreIterativ(int n, int & pare, int & impare){
pare = 0;
impare = 0;
int putereImpare = 1; //putere lui 10 pentru formarea nr cu cifre impare
int puterePare = 1; //putere lui 10 pentru formarea nr cu cifre pare
while (n){
if (n & 1){ //daca n este impar
impare = impare + putereImpare * (n % 10);
n /= 10;
putereImpare *= 10;
} //if
else{
pare = pare + puterePare * (n % 10);
n /= 10;
puterePare *= 10;
} //else
} //while
}
/*************************************************************************************
Subiectul III Prelucrare imagine
*************************************************************************************/
const int DIMMAX = 320;
5
for (int i = 0; i < m; i++){
jNou = 0;
for (int j = 0; j < m; j++){
imNoua[iNou][jNou] = im[i][j];
imNoua[iNou][jNou + 1] = im[i][j];
imNoua[iNou + 1][jNou++] = im[i][j];
imNoua[iNou + 1][jNou++] = im[i][j];
} //for j
iNou += 2;
} //for i
m *= 2;
for (int i = 0; i < m; i++){
for (int j = 0; j < m; j++){
im[i][j] = imNoua[i][j];
} //for j
} //for i
}
//programul principal
int main(){
int m = 0;
int im[DIMMAX][DIMMAX];
citireImagine(m, im);
int k = 0; char s[5];
citireTransformari(k, s);
transformari(k, s, m, im);
afisare(m, im);
return 0;
}
UNIVERSITATEA BABEŞ-BOLYAI
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
Concurs admitere - varianta 1
Proba scrisă la Informatică
În atenția concurenților:
1. Se consideră că indexarea tuturor șirurilor începe de la 1.
2. Problemele tip grilă (Partea A) pot avea unul sau mai multe răspunsuri corecte. Răspunsurile trebuie scrise de candidat pe foaia de
concurs (nu pe foaia cu enunțuri). Obținerea punctajului aferent problemei este condiționată de identificarea tuturor variantelor de
răspuns corecte și numai a acestora.
3. Pentru problemele din Partea B se cer rezolvări complete pe foaia de concurs.
a. Rezolvările se vor scrie în pseudocod sau într-un limbaj de programare (Pascal/C/C++).
b. Primul criteriu în evaluarea rezolvărilor va fi corectitudinea algoritmului, iar apoi performanța din punct de vedere al timpului
de executare și al spațiului de memorie utilizat.
c. Este obligatorie descrierea și justificarea (sub) algoritmilor înaintea rezolvărilor. Se vor scrie, de asemenea, comentarii pentru
a uşura înţelegerea detaliilor tehnice ale soluției date, a semnificaţiei identificatorilor, a structurilor de date folosite etc.
Neîndeplinirea acestor cerințe duce la pierderea a 10% din punctajul aferent subiectului.
d. Nu se vor folosi funcții sau biblioteci predefinite (de exemplu: STL, funcţii predefinite pe şiruri de caractere).
Partea A (30 puncte)
A.1. Oare ce face? (5 puncte)
Se consideră subalgoritmul expresie(n), unde n este un număr natural (1 ≤ n ≤ 10000).
Subalgoritm expresie(n):
Dacă n > 0 atunci
Dacă n MOD 2 = 0 atunci
returnează -n * (n + 1) + expresie(n - 1)
altfel
returnează n * (n + 1) + expresie(n - 1)
SfDacă
altfel
returnează 0
SfDacă
SfSubalgoritm
int sum(int n, int a[], int* s){ int sum(int n, int a[], int& s){ function sum(n:integer; a:vector;
*s = 0; s = 0; var s:integer):integer;
int i = 1; int i = 1; var i:integer;
while(i <= n){ while(i <= n){ begin
if (a[i] != 0) if (a[i] != 0) s := 0; i := 1;
*s += a[i]; s += a[i]; while (i <= n) do
++i; ++i; begin
} } if (a[i] <> 0) then
return *s; return s; s := s + a[i];
} } i := i + 1;
end;
sum := s;
end;
2
A.6. Pune 'b' (5 puncte)
Se consideră o matrice pătratică mat de dimensiune n × n (n - număr natural impar, 3 ≤ n ≤ 100) și subalgoritmul
puneB(mat, n, i, j) care pune caracterul 'b' pe anumite poziții în matricea mat. Parametrii i și j sunt numere naturale
(1 ≤ i ≤ n, 1 ≤ j ≤ n).
Precizați de câte ori se autoapelează subalgoritmul puneB(mat, n, i, j) dacă avem secvența de instrucțiuni:
n ← 7, i ← 2, j ← 4
puneB(mat, n, i, j)
A. de 5 ori
B. de același număr de ori ca și în cazul secvenței de instrucțiuni
n ← 9, i ← 3, j ← 5
puneB(mat, n, i, j)
C. de 10 ori
D. de 0 ori
E. de o infinitate de ori
Scrieți o variantă recursivă a subalgoritmului calculCuCaractere(s, n, p, q, nr) care are același antet cu acesta și
care are același efect în secvența de instrucțiuni:
Citește n, s, p, q
Scrie calculCuCaractere(s, n, p, q, 0)
3
B.3. Robi-grădina (25 puncte)
Un grǎdinar pasionat de tehnologie decide sǎ foloseascǎ o „armatǎ” de roboți pentru a uda straturile din grǎdina sa. El
dorește sǎ foloseascǎ apǎ de la izvorul situat la capǎtul cǎrǎrii principale care strǎbate grǎdina. Fiecǎrui strat ȋi este
asociat un robot și fiecare robot are de udat un singur strat. Toți roboții pornesc de la izvor ȋn misiunea de udare a
straturilor la aceeași orǎ a dimineții (spre exemplu 5:00:00) și lucreazǎ în paralel și neȋncetat un același interval de
timp. Ei parcurg cǎrarea principalǎ pȃnǎ la stratul lor, pe care ȋl udă și revin la izvor pentru a-și reumple rezervorul de
apǎ. La finalul intervalului de timp aferent activității, toți roboții se opresc simultan, indiferent de starea lor curentă.
Inițial, la izvor este amplasat un singur robinet. Grǎdinarul constată însă cǎ apar ȋntȃrzieri ȋn programul de udare a
plantelor deoarece roboții trebuie sǎ aștepte la rȃnd pentru reumplerea rezervoarelor cu apǎ, astfel ȋncȃt considerǎ cǎ
cea mai bunǎ soluție este sǎ instaleze mai multe robinete pentru alimentarea roboților. Roboții pornesc dimineața cu
rezervoarele umplute. Doi roboți nu îşi pot umple rezervorul în acelaşi moment de la acelaşi robinet.
Se cunosc: intervalul de timp t cât cei n roboți lucrează (exprimat în secunde), numărul de secunde di necesare pentru a
parcurge distanța de la izvor la stratul asociat, numărul de secunde ui necesar pentru udarea acestui strat și faptul cǎ
umplerea rezervorului propriu cu apǎ dureazǎ exact o secundǎ pentru fiecare robot (t, n, di, ui - numere naturale, 1 ≤ t ≤
20000, 1 ≤ n ≤ 100, 1 ≤ di ≤ 1000, 1 ≤ ui ≤ 1000, i = 1, 2, ..., n).
Cerințe:
a. Enumerați roboții care se întâlnesc la izvor la un anumit moment de timp mt (1 ≤ mt ≤ t). Justificați răspunsul.
Notă: roboții se identifică prin numărul lor de ordine.
b. Care este numǎrul minim de robinete suplimentare minRobineteSuplim pe care trebuie sǎ le instaleze grǎdinarul
astfel încȃt roboții sǎ nu aștepte deloc unul după altul pentru reumplerea rezervorului? Justificați răspunsul.
c. Scrieți un subalgoritm care determină numǎrul minim de robinete suplimentare minRobineteSuplim. Parametrii
de intrare sunt numerele n și t, șirurile d și u cu câte n elemente fiecare, iar parametrul de ieșire este
minRobineteSuplim.
Notă:
1. Toate subiectele sunt obligatorii.
2. Ciornele nu se iau în considerare.
3. Se acordă 10 puncte din oficiu.
4. Timpul efectiv de lucru este de 3 ore.
4
BAREM
OFICIU .................................................................................................................................................................. 10 puncte
Partea A ................................................................................................................................................................. 30 puncte
A. 1. Oare ce face? Răspunsul A ............................................................................................................................... 5 puncte
A. 2. Calcul. Răspunsurile B, D .................................................................................................................................. 5 puncte
A. 3. Expresie logică. Răspunsurile A, B, D, E ......................................................................................................... 5 puncte
A. 4. Ce se afișează? Răspunsul D............................................................................................................................. 5 puncte
A. 5. Număr norocos. Răspunsurile B, C.................................................................................................................... 5 puncte
A. 6. Pune b. Răspunsurile A, B1 .............................................................................................................................. 5 puncte
Partea B ................................................................................................................................................................. 60 puncte
B. 1. Calcul.............................................................................................................................................................. 10 puncte
respectarea parametrilor de intrare și ieșire ......................................................................................................... 2 puncte
condiția de oprire din recursivitate ....................................................................................................................... 1 puncte
valoarea returnată la oprirea recursivității ............................................................................................................ 1 puncte
condiția pentru caracter diferit de cifră ................................................................................................................ 2 puncte
valoarea returnată în cazul unui caracter diferit de cifră ...................................................................................... 2 puncte
valoarea returnată în cazul unui caracter cifră...................................................................................................... 2 puncte
Subalgoritm calculCuCaractere(s, n, p, q, nr):
Dacă p > q atunci
returnează nr
altfel
Dacă s[p] < '0' sau s[p] > '9' atunci
returnează nr + calculCuCaractere(s, n, p + 1, q, 0)
altfel
returnează calculCuCaractere(s, n, p + 1, q, 10 * nr + s[p] - '0')
SfDacă
SfDacă
SfSubalgoritm
1
in varianta subiectului în limba engleză, datorită traducerii ambigue a termenului auto-apel, a fost considerată corectă atât
varianta cu răspunsurile A și B, cât și varianta cu răspunsul B.
5
Partea B (soluții) .................................................................................................................................................... 60 puncte
B. 1. Calcul.............................................................................................................................................................. 10 puncte
6
UNIVERSITATEA BABEŞ-BOLYAI
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
Concurs admitere septembrie 2018
Proba scrisă la Informatică
În atenția concurenților:
1. Se consideră că indexarea tuturor șirurilor începe de la 1.
2. Problemele tip grilă (Partea A) pot avea unul sau mai multe răspunsuri corecte. Răspunsurile trebuie scrise de candidat pe foaia de
concurs (nu pe foaia cu enunțuri). Obținerea punctajului aferent problemei este condiționată de identificarea tuturor variantelor de
răspuns corecte și numai a acestora.
3. Pentru problemele din Partea B se cer rezolvări complete pe foaia de concurs.
a. Rezolvările se vor scrie în pseudocod sau într-un limbaj de programare (Pascal/C/C++).
b. Primul criteriu în evaluarea rezolvărilor va fi corectitudinea algoritmului, iar apoi performanța din punct de vedere al timpului
de executare și al spațiului de memorie utilizat.
c. Este obligatorie descrierea și justificarea (sub) algoritmilor înaintea rezolvărilor. Se vor scrie, de asemenea, comentarii pentru
a uşura înţelegerea detaliilor tehnice ale soluției date, a semnificaţiei identificatorilor, a structurilor de date folosite etc.
Neîndeplinirea acestor cerințe duce la pierderea a 10% din punctajul aferent subiectului.
d. Nu se vor folosi funcții sau biblioteci predefinite (de exemplu: STL, funcţii predefinite pe şiruri de caractere).
Partea A (30 puncte)
A.1. Oare ce face? (5 puncte)
Subalgoritmul generare(n) prelucrează un număr natural n (0 < n < 100).
Subalgoritm generare(n):
nr 0
Pentru i 1, 1801 execută
folositi fals
SfPentru
CâtTimp nu folositn execută
suma ← 0, folositn adevărat
CâtTimp (n ≠ 0) execută
cifra ← n MOD 10, n ← n DIV 10
suma ← suma + cifra * cifra * cifra
SfCâtTimp
n ← suma, nr ← nr + 1
SfCâtTimp
returnează nr
SfSubalgoritm
Precizați pentru care valori ale lui v și k subalgoritmul returnează valoarea 928.
A. v = (194, 121, 782, 0) și k = 4
B. v = (928) și k = 1
C. v = (9, 2, 8, 0) și k = 4
D. v = (8, 2, 9) și k = 3
E. v = (912, 0, 120, 8, 0) și k = 5
1
A.3. Evaluare logică (5 puncte)
Fie s un șir cu k elemente de tip boolean și subalgoritmul evaluare(s, k, i), unde k și i sunt numere naturale
(0 ≤ i ≤ k ≤ 100).
Subalgoritm evaluare(s, k, i)
Dacă i ≤ k atunci
Dacă si atunci
returnează si
altfel
returnează (si sau evaluare(s, k, i + 1))
SfDacă
altfel
returnează fals
SfDacă
SfSubalgoritm
A. de 3 ori
B. de același număr de ori ca în următoarea secvență de instrucțiuni
s ← (fals, fals, fals, fals, fals, fals, fals, adevărat)
k ← 8
i ← 4
evaluare(s, k, i)
C. de 6 ori
D. niciodată
E. de o infinitate de ori
2
A.5. Exponențiere (5 puncte)
Care dintre următorii algoritmi calculează corect valoarea ab, a și b fiind două numere naturale (1 ≤ a ≤ 11, 0 ≤ b ≤ 11).
A. Subalgoritm expo(a, b): B. Subalgoritm expo(a, b):
rezultat ← 1 Dacă b ≠ 0 atunci
CâtTimp b > 0 execută Dacă b MOD 2 = 1 atunci
Dacă b MOD 2 = 1 atunci returnează expo(a * a, b / 2) * a
rezultat ← rezultat * a altfel
SfDacă returnează expo(a * a, b / 2)
b ← b DIV 2 SfDacă
a ← a * a altfel
SfCâtTimp returnează 1
returnează rezultat SfDacă
SfSubalgoritm SfSubalgoritm
C. Subalgoritm expo(a, b): D. Subalgoritm expo(a, b):
rezultat ← 1 Dacă b = 0 atunci
CâtTimp b > 0 execută returnează 1
rezultat ← rezultat * a SfDacă
b ← b - 1 aux ← expo(a, b DIV 2)
SfCâtTimp Dacă b MOD 2 = 0 atunci
returnează rezultat returnează aux * aux
SfSubalgoritm altfel
returnează a * aux * aux
SfDacă
SfSubalgoritm
E. Subalgoritm expo(a, b):
Dacă b = 0 atunci
returnează 1
SfDacă
returnează a * expo(a, b - 1)
SfSubalgoritm
Scrieți o variantă recursivă (care nu conține structuri repetitive) a subalgoritmului evaluare(n, coef, x) care are
același antet și același efect cu acesta.
3
B.2. Intersecție (25 puncte)
Se consideră două șiruri, fiecare conținând numere întregi distincte, cuprinse între -30 000 și 30 000. Şirul a are
n (0 < n ≤ 10 000) elemente, iar șirul b are m (0 < m ≤ 10 000) elemente și este ordonat crescător.
Scrieți un subalgoritm care determină șirul c, având k (0 ≤ k ≤ 10 000) elemente, format din toate elementele comune ale
celor două șiruri, luate o singură dată în orice ordine. Parametrii de intrare sunt cele două șiruri (a și b) și lungimile lor (n
și m). Parametrii de ieșire vor fi șirul c și lungimea k a șirului. Dacă nu există elemente comune, k va fi 0.
Exemplu: dacă n = 4, a = (5, -7,-2, 3), m = 5 și b = (-2, 3, 5, 7, 8), șirul c are k = 3 elemente și este c = (5, -2, 3).
Cerințe:
i. Scrieți un subalgoritm care verifică dacă un număr natural a este frate cu un număr natural b (0 < a ≤ 30 000, 0 <
b ≤ 30 000) Parametrii de intrare sunt cele două numere a și b. Parametrul de ieșire va fi esteFrate și va avea
valoarea adevărat dacă a este frate cu b și fals, altfel. (11 puncte)
ii. Scrieți un subalgoritm care determină cea mai lungă subsecvență a șirului x, formată din elemente care nu au
niciun frate în șirul x. O subsecvență a unui șir este formată din elemente ale șirului aflate pe poziții consecutive.
Parametrii de intrare sunt șirul x și lungimea lui n. Parametrii de ieșire vor fi poziția de început a subsecvenței start
și lungimea acesteia k. Dacă există mai multe subsecvențe de aceeași lungime maximă, se va considera ultima dintre
ele. Dacă nu există nicio astfel de subsecvență, start va fi -1 și k va fi 0. (14 puncte)
Exemplu: Fie n = 11 și x = (12345, 9, 100, 567, 5678, 345, 123, 8989, 222, 11, 78). Numerele fără frați din șirul
x sunt: 9, 100, 8989, 222, 11, iar subsecvența căutată este (8989, 222, 11), deci start = 8 și k = 3.
Notă:
1. Toate subiectele sunt obligatorii.
2. Ciornele nu se iau în considerare.
3. Se acordă 10 puncte din oficiu.
4. Timpul efectiv de lucru este de 3 ore.
4
BAREM
1
UNIVERSITATEA BABEŞ-BOLYAI
FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ
Concurs de admitere – 21 iulie 2019
Proba scrisă la Informatică
În atenția concurenților:
1. Se consideră că indexarea șirurilor începe de la 1.
2. Problemele tip grilă din Partea A pot avea unul sau mai multe răspunsuri corecte care trebuie indicate de candidat pe formularul
special de pe foaia de concurs. Notarea acestora se face conform sistemului de punctare parțială din regulamentul concursului.
3. Pentru problemele din Partea B se cer rezolvări complete scrise pe foaia de concurs, fiind evaluate în detaliu conform baremului.
a. Rezolvarea cerințelor B1-B4 implică răspunsuri atât în limbaj natural/matematic, cât și în pseudocod sau Pascal/C/C++.
b. Primul criteriu în evaluarea rezolvărilor va fi corectitudinea algoritmului, iar apoi performanța din punct de vedere al timpului
de executare și al spațiului de memorie utilizat.
c. Este obligatorie descrierea și justificarea subalgoritmilor înaintea rezolvărilor. Se vor scrie, de asemenea, comentarii pentru
a ușura înțelegerea detaliilor tehnice ale soluției date, a semnificației identificatorilor, a structurilor de date folosite etc.
Neîndeplinirea acestor cerințe duce la pierderea a 10% din punctajul aferent subiectului.
d. Nu se vor folosi funcții sau biblioteci predefinite (de exemplu: STL, funcții predefinite pe șiruri de caractere).
Partea A (60 puncte)
A.1. Ce se afișează? (6 puncte)
Se consideră programul de mai jos. Care este rezultatul afișat în urma execuției programului?
A. P(a, b) = 253; B. P(a, b) = 132; C. P(a, b) = 22; D. P(a, b) = 253;
a = 11; b = 11 a = 11; b = 121; a = 11; b = 11; a = 11; b = 121;
Varianta C++ Varianta C Varianta Pascal
#include <iostream> #include <stdio.h> function P(x : Integer;
using namespace std; var y : Integer) : Integer;
begin
int P(int x, int &y){ int P(intx, int *y){ y := y * x; x := x + y;
y = y * x; x = x + y; *y = (*y) * x; x = x + (*y); P := x + y
return x + y; return x + (*y); end;
} } var a, b : Integer;
int main(){ Int main(){ Begin
int a = 11; int b = a; int a = 11; int b = a; a := 11; b := a;
cout << "P(a, b) = " << P(a, b); printf("P(a, b) = %d", P(a, &b)); Write('P(a, b) = ', P(a, b))
cout << endl << "; a = " << a; printf(";\na = %d", a); WriteLn('; ');
cout << "; b = " << b << endl; printf("; b = %d\n", b); Write('a = ', a);
return 0; return 0; WriteLn('; b = ', b);
} } End.
1
A.4. Oare ce face? (6 puncte)
Subalgoritm ghici(n) Se consideră subalgoritmul ghici(n) , unde n este număr natural
f ← 0; p ← -1
Pentru c ← 0, 9 executǎ (1 ≤ n ≤ 10 000). Precizați efectul subalgoritmului ghici(n):
x ← n; k ← 0
CȃtTimp x > 0 executǎ A. Calculează și returnează numǎrul de cifre din reprezentarea zecimală a
Dacǎ x MOD 10 = c atunci numǎrului n.
k ← k + 1
SfDacǎ B. Calculează și returnează frecvența cifrei maxime din reprezentarea
x ← x DIV 10 zecimală a numǎrului n.
SfCâtTimp
Dacǎ k > f atunci C. Calculează și returnează una dintre cifrele cu frecvența maximǎ din
p ← c; f ← k reprezentarea zecimală a numǎrului n.
SfDacǎ
SfPentru D. Calculează și returnează numărul de cifre egale cu c din reprezentarea
returneazǎ p zecimală a numărului n.
SfSubalgoritm
3
A.10. Cavaleri și mincinoși (6 puncte)
Pe o insulă locuiesc cavaleri care spun întotdeauna adevărul și mincinoși care mint întotdeauna. Un vizitator ajuns pe
insulă dorește să afle natura unei perechi de localnici cu care s-ar întâlni în plimbările lui pe insulă. Astfel, atunci când
el se întâlnește cu doi localnici A și B îi adresează lui A întrebarea „Q1: Amândoi sunteți cavaleri?”, dar răspunsul
primit (R1) nu îl lămurește în privința naturii fiecăruia din cei doi localnici. De aceea vizitatorul îi adresează tot lui A o
nouă întrebare: „Q2: Sunteți la fel, amândoi cavaleri sau amândoi mincinoși?”; de data aceasta, răspunsul primit (R2) îl
lămurește pe vizitator (adică acum știe ce este fiecare dintre cei doi localnici, cavaler sau mincinos).
Ce a răspuns localnicul A știind că vizitatorul a reușit să identifice în mod exact natura celor doi localnici pe baza
scenariului descris anterior?
A. R1: Da, R2: Da B. R1: Da, R2: Nu C. R1: Nu D. Variantele B și C sunt corecte.
Notă:
1. Toate subiectele sunt obligatorii.
2. Ciornele nu se iau în considerare.
3. Se acordă 10 puncte din oficiu.
4. Timpul efectiv de lucru este de 3 ore.
4
BAREM
OFICIU .................................................................................................................................................................. 10 puncte
Partea A ................................................................................................................................................................. 60 puncte
A.1. Ce se afișează? Răspuns: D ........................................................................................................................... 6 puncte
A.2. Evaluare. Răspuns: A, B ............................................................................................................................... 6 puncte
A.3. Ce valori sunt necesare? Răspuns: B, D ....................................................................................................... 6 puncte
A.4. Oare ce face? Răspuns: C .............................................................................................................................. 6 puncte
A.5. Generare șir de numere speciale. Răspuns: C ............................................................................................. 6 puncte
A.6. Produs de cifre. Răspuns: A, B ..................................................................................................................... 6 puncte
A.7. Prelucrare șir. Răspuns: A, C ....................................................................................................................... 6 puncte
A.8. Magie. Răspuns: orice variantă (vezi nota finală)........................................................................................ 6 puncte
A.9. Completați. Răspuns: A, D ............................................................................................................................ 6 puncte
A.10. Cavaleri și mincinoși. Răspuns: B ............................................................................................................... 6 puncte
Partea B Banane .................................................................................................................................................... 30 puncte
B.1. (241 * 8 - 65 ) / 81 = 23 banane ............................................................................................................ 2 puncte
B.2. (81 * 15 + 65) / 8 + (81 * 31 + 65) / 8 = 482 banane ........................................................................ 2 puncte
B.3. Algoritmul & formula ............................................................................................................................... 14 puncte
o Identificare corectă a formulei 79 + ((k - 79) / 81) * 81 .............................................................. 10 puncte
Expresia formulei ....................................................................................................................... 4 puncte
Justificarea ................................................................................................................................. 6 puncte
o Implementare
Respectarea parametrilor (doar cel de intrare) .......................................................................... 2 puncte
Algoritm
V1 pe baza formulei 79 + ((k - 79) / 81) * 81 ...................................................... 2 puncte
V2 (structură repetitivă ”smart” în care se verifică cu formula (8 * n - 65) MOD 81 = 0
dacă valoarea curentă a lui n este corectă sau nu)......................................................... 7 puncte
V3 simulare (se determină mărimile grămezilor intermediare) ................................... 5 puncte
B.4. Algoritmul & formula ............................................................................................................................... 12 puncte
o Respectarea parametrilor ........................................................................................................................ 2 puncte
o Algoritm
Structura repetitivă pentru iterarea insulelor .............................................................................. 3 puncte
Valori distincte pentru numărul de banane de pe fiecare insulă................................................. 5 puncte
Însumarea valorilor .................................................................................................................... 2 puncte
int bananeV1(int k){ int bananeToateInsulele(int k, int nr){
return 79 + (k - 79) / 81 * 81; int s = 0;
} for(int i = 1; i <= nr; i++){
int bananeV2(int k){ int ni = bananeV1(k);
while ((8 * k - 65) % 81 != 0) s += ni; k = ni - 1;
k--; }
return k; return s;
} }
int bananeV3(int k){
int n = k;
while (n >= 4){
if (n % 3 == 1){
int n1 = 2 * n / 3;
if (n1 % 3 == 1){
int n2 = 2 * n1 / 3;
if (n2 % 3 == 1){
int n3 = 2 * n2 / 3;
if (n3 % 3 == 1){ return n;}
}
}
}
n--;
}
}
Notă: În cazul problemei A.8. subalgoritmul nrCifre(nr) ar fi trebuit să prelucreze inclusiv valori nule (aspect omis în
enunțul problemei) pentru ca algoritmul magie(x, z) să funcționeze conform cerințelor. În consecință, punctajul obținut
pentru această problemă va fi de 6 puncte (indiferent de răspunsurile indicate pe foaia de examen).
5