Sunteți pe pagina 1din 0

Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n

nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Cte dintre cuvintele generate ncep cu litera b i se termin cu litera e? (4p.)
a.
9
b.
15
c.
12
d.
20

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
Pentru definiia de mai jos a subprogramului f, ce se afieaz ca urmare a apelului
f(121,1);? (6p.)
2.
//C
void f(long n, int i)
{ if(n!=0)
if(n%3>0)
{ printf("%d",i); f(n/3,i+1); }
}
//C++
void f(long n, int i)
{ if(n!=0)
if(n%3>0)
{ cout<<i; f(n/3,i+1); }
}
3. Fisierul text bac.txt conine, pe o singur linie, cel mult 1000 de numere naturale nenule
cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program
C/C++ care citete de la tastatur un numr natural nenul n (n999) i numerele din fiierul
bac.txt i care afieaz pe ecran, separate prin cte un spaiu, toate numerele din fiier
care sunt divizibile cu n. Dac fiierul nu conine niciun astfel de numr, atunci se va afia
pe ecran mesajul NU EXISTA.
Exemplu: dac fiierul bac.txt conine numerele: 3 100 40 70 25 5 80 6 3798,
pentru n=10 atunci pe ecran se va afia: 100 40 70 80 (10p.)
4. Subprogramul sub, cu trei parametri, primete prin intermediul parametrului:
v un tablou unidimensional cu cel mult 100 de componente ce memoreaz numere
ntregi cu cel mult 4 cifre
n un numr natural nenul mai mic sau egal cu 100 ce reprezint numrul efectiv de
componente ale tabloului primit prin intermediul parametrului v
a un numr ntreg cu cel mult 4 cifre
Subprogramul sub returneaz numrul componentelor tabloului primit prin intermediul
parametrului v ale cror valori sunt strict mai mici dect valoarea parametrului a.
Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, n urma
apelului, subprogramului sub va returna valoarea 2.
a) Scriei definiia complet a subprogramului sub. (4p.)
b) S se scrie un program C/C++ care s citeasc de la tastatur un numr natural nenul n
(n100) i n numere ntregi, fiecare avnd cel mult 4 cifre, i care, folosind apeluri utile ale
subprogramului sub, s afieze pe ecran mesajul DA dac oricare dou numere dintre cele
n numere ntregi citite sunt distincte dou cte dou, sau mesajul NU n caz contrar.
Exemplu: pentru n=6 i cele n numere citite de la tastatur: 47 183 69 8 134 -56
se va afia pe ecran mesajul DA (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Care este ultimul cuvnt generat? (4p.)
a.
edcb
b.
eeee
c.
edde
d.
eded

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia de mai jos a subprogramului f, ce se afieaz ca urmare a apelului
f(12345);? (6p.)

//C
void f(long n)
{ printf("%d",n%10);
if(n!=0)
{ f(n/100); printf("%d",n%10); }
}
//C++
void f(long n)
{ cout<<n%10;
if(n!=0)
{ f(n/100); cout<<n%10;}
}
3. Fiierului text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel
mult 100 de numere ntregi, fiecare numr avnd cel mult 4 cifre. Scriei un program C/C++
care citete numerele din fiierul NR.TXT i afieaz pe ecran, separate prin cte un spaiu,
n ordine cresctoare, toate numerele naturale nenule din fiier. Dac nu exist astfel de
numere se va afia pe ecran mesajul NU EXISTA.
Exemplu: dac fiierul bac.txt conine numerele: -3 -10 0 7 -5 7 51 -800 6
3798, atunci pe ecran se va afia: 6 7 7 51 3798 (10p.)
4. Un numr n se numete extraprim dac att el ct i orice numr obinut prin permutarea
cifrelor lui n sunt numere prime. De exemplu, numrul 113 este un numr extraprim
deoarece 113, 311, 131 sunt numere prime.
a) Scriei definiia complet a unui subprogram f, cu un parametru, subprogram care:
- primete prin intermediul parametrului a un numr natural cu cel mult 3 cifre (a>1)
- returneaz suma exponenilor divizorilor primi din descompunerea n factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*3
2
*5

i
1+2+1=4. (4p.)
b) Scriei un programul C/C++ care citete de la tastatur un numr natural n, 2n999, i
care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului f, mesajul DA
dac n este un numr extraprim, altfel va afia mesajul NU. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Care este penultimul cuvnt generat? (4p.)
a.
edec
b.
eded
c.
edde
d.
edcb

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a
subprogramului f, ce se afieaz ca
urmare a apelului f(26);? (6p.)

void f (int x)
{
if(x>0)
if(x%4==0)
{ cout<<x; | printf(%c,x);
f(x-1); }
else
{ f(x/3);
cout<<y; | printf(%c,y);
}
}
3. Fiierului text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel
mult 100 de numere naturale, fiecare numr avnd cel mult 4 cifre. Scriei un program
C/C++ care citete toate numerele din fiierul NR.TXT i afieaz pe ecran, separate prin
cte un spaiu, n ordine cresctoare, toate numerele din fiier care au cel puin 3 cifre.
Dac fiierul nu conine astfel de numere se va afia pe ecran mesajul NU EXISTA. (10p.)
4. Subprogramul cif, cu doi parametri, primete prin intermediul parametrului a un numr
natural cu cel mult 8 cifre i prin intermediul parametrului b o cifr; subprogramul returneaz
numrul de apariii ale cifrei b n scrierea numrului a.
Exemplu: pentru a=125854 i b=5, subprogramul va returna valoarea 2.
a) Scriei definiia complet a subprogramului cif. (4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exact 8 cifre
i care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului cif, cel mai
mare numr palindrom ce poate fi obinut prin rearanjarea tuturor cifrelor numrului n. Dac
nu se poate obine un palindrom din toate cifrele numrului n, programul va afia pe ecran
numrul 0. Un numr natural este palindrom dac este egal cu numrul obinut prin scrierea
cifrelor sale n ordine invers.
Exemplu: dac n=21523531 atunci se va afia pe ecran numrul 53211235, iar dac
n=12272351 atunci se va afia pe ecran numrul 0. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Care este antepenultimul cuvnt generat? (4p.)
a.
edde
b.
eddb
c.
edeb
d.
edcb

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului f,
ce se afieaz ca urmare a apelului
f(15,2);? (6p.)
void f (int n, int x)
{ if(x>n)
cout<<0; | printf(%d,0);
else
if(x%4<=1) f(n,x+1);
else
{ f(n,x+3);
cout<<1; | printf(%d,1);
}
}
3. Fiierul text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel mult
100 de numere naturale, fiecare numr avnd cel mult 4 cifre. Scriei un program C/C++
care citete numerele din fiierul NR.TXT i afieaz pe ecran, separate prin cte un spaiu,
n ordine descresctoare, toate numerele din fiier care au cel mult 2 cifre. Dac fiierul nu
conine astfel de numere se va afia pe ecran mesajul NU EXISTA. (10p.)
4. Subprogramul cif, cu doi parametri, primete prin intermediul parametrului a un numr
natural cu cel mult 8 cifre i prin intermediul parametrului b o cifr; subprogramul returneaz
numrul de apariii ale cifrei b n scrierea numrului a.
Exemplu: pentru a=125854 i b=5, subprogramul va returna valoarea 2.
a) Scriei definiia complet a subprogramului cif. (4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exact 8 cifre,
fiecare cifr fiind nenul, i care determin i afieaz pe ecran, folosind apeluri utile ale
subprogramului cif, cel mai mic numr palindrom ce poate fi obinut prin rearanjarea
tuturor cifrelor numrului n. Dac nu se poate obine un palindrom din toate cifrele numrului
n, programul va afia pe ecran numrul 0. Un numr natural este palindrom dac este egal
cu numrul obinut prin scrierea cifrelor sale n ordine invers.
Exemplu: dac n=21523531 atunci se va afia pe ecran numrul 12355321, iar dac
n=12272351 atunci se va afia pe ecran numrul 0. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Folosind modelul combinrilor se genereaz numerele naturale cu cte trei cifre distincte din
mulimea {1,2,3,7}, numere cu cifrele n ordine strict cresctoare, obinndu-se, n ordine:
123, 127, 137, 237. Dac se utilizeaz exact aceeai tehnic pentru a genera numerele
naturale cu patru cifre distincte din mulimea {1,2,3,4,5,6,7,8}, cte dintre numerele
generate au prima cifr 2 i ultima cifr 7? (4p.)
a.
8
b.
3
c.
4
d.
6

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
Pentru subprogramul f definit mai jos, ce se afieaz ca urmare a apelului f(3,17)?(6p.) 2.
//C
void f ( int a, int b)
{ if(a<=b)
{f(a+1,b-2); printf(%c,*);}
else printf(%d,b);
}
//C++
void f ( int a, int b)
{ if(a<=b)
{ f(a+1,b-2); cout<<*;}
else cout<<b;
}
3. Scriei un program C/C++ care citete de la tastur un numr natural n cu cel mult 8 cifre
(n10) i care creeaz fiierul text NR.TXT ce conine numrul n i toate prefixele nenule
ale acestuia, pe o singur linie, separate prin cte un spaiu, n ordine descresctoare a
valorii lor.
Exemplu: pentru n=10305 fiierul NR.TXT va conine numerele:
10305 1030 103 10 1 (10p.)
4. Subprogramul f, cu un parametru:
- primete prin intermediul parametrului a un numr natural cu cel mult 8 cifre (a>1)
- returneaz cel mai mic divizor prim al valorii parametrului a.
Exemplu: pentru valoarea 45 a parametrului a, subprogramul va returna valoarea 3
deoarece a=3
2
*5

iar cel mai mic divizor prim al su este 3.
a) Scriei definiia complet a subprogramului f. (4p.)
b) Scriei un program C/C++ care s citeasc de la tastatur un numr natural nenul n
(n100) i apoi un ir de n numere naturale de cel mult 8 cifre fiecare, toate numerele din
ir fiind strict mai mari dect 1. Folosind apeluri utile ale subprogramului f, programul va
determina i va afia pe ecran toate numerele prime din irul citit. Numerele determinate se
vor afia pe o singur linie a ecranului, separate prin cte un spaiu, n ordine cresctoare a
valorii lor. Dac nu exist astfel de numere se va afia pe ecran mesajul NU EXISTA.
Exemplu: pentru n=7, irul: 1125, 2, 314, 101, 37, 225, 12 pe ecran se va afia:
2 37 101 (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Utiliznd metoda backtracking sunt generate numerele de 3 cifre, avnd toate cifrele
distincte i cu proprietatea c cifrele aflate pe poziii consecutive sunt de paritate diferit.
tiind c primele ase soluii generate sunt, n aceast ordine, 103, 105, 107, 109, 123,
125, care este a zecea soluie generat? (4p.)
a.
145
b.
147
c.
230
d.
149

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Se consider subprogramul alturat:
Ce valoare are f(128,2)? (6p.)
int f(int a, int b){
if (b<1) return -1;
else
if (a%b==0)
return 1+f(a/b,b);
else
return 0; }
3. Scriei un program C/C++ care citete de la tastatur un numr natural n (n100) i apoi
cele n elemente, numere naturale cu cel mult 4 cifre fiecare, ale unui tablou unidimensional
a. Programul determin i afieaz pe prima linie a ecranului suma celor n elemente ale
tabloului, pe a doua linie a ecranului suma primelor n-1 elemente i aa mai departe astfel
nct pe linia n-1 suma primelor 2 elemente iar pe linia n primul element al tabloului.
Exemplu: dac n=4 iar tabloul are elementele
a=(1,2,3,4) programul va afia valorile
alturate: (10p.)

10
6
3
1
4.
Se consider fiierul BAC.TXT ce conine un ir cresctor cu cel mult un milion de numere
naturale de cel mult nou cifre fiecare, separate prin cte un spaiu.
a) S se scrie un program C/C++ care, folosind un algoritm eficient din punct de vedere al
memoriei utilizate i al timpului de executare, citete din fiier toi termenii irului i afieaz
pe ecran, pe o singur linie, fiecare termen distinct al irului urmat de numrul de apariii ale
acestuia n ir. Valorile afiate sunt separate prin cte un spaiu.
Exemplu: dac fiierul BAC.TXT are urmtorul coninut:
1 1 1 5 5 5 5 9 9 11 20 20 20
programul va afia:
1 3 5 4 9 2 11 1 20 3
deoarece 1 apare de 3 ori, 5 apare de 4 ori, etc. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Se consider subprogramul f definit
alturat. Ce se va afia n urma
apelului f(12345);? (4p.)
void f(long int n)
{ if (n!=0)
{if (n%2 == 0)
cout<<n%10; | printf(%d,n%10);
f(n/10);
}
}
a.
513
b.
24
c.
42
d.
315

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Folosind tehnica bactracking un elev a scris un program care genereaz toate numerele de
cte n cifre (0<n9), cifrele fiind n ordine strict cresctoare. Dac n este egal cu 5, cte
numere vor fi generate de program? (6p.)
3. Scriei un program C/C++ care citete de la tastatur un numr natural n (0<n100)i cele
3*n elemente ale tabloului unidimensional v, fiecare element fiind un numr natural cu cel
mult patru cifre fiecare. Tabloul este mprit n trei zone cu cte n elemente: prima zon
conine primele n elemente din tablou, a doua zon conine urmtoarele n elemente din
tablou, restul elementelor fiind n zona a treia. Programul va interschimba primul element
par (dac exist) al zonei unu cu ultimul element impar (dac exist) al zonei trei i apoi va
scrie pe prima linie a fiierului text BAC.TXT toate elementele tabloului, separate prin cte
un spaiu. n cazul n care unul dintre aceste dou elemente, care urmeaz a fi
interschimbate, nu exist, programul nu va efectua nici o modificare asupra tabloului dat.
Exemplu: pentru n=3 i v=(1 2 3 4 5 6 7 8 9), fiierul BAC.TXT va conine:
1 9 3 4 5 6 7 8 2 (10p.)
4. Se consider irul definit de relaia de
recuren alturat:



a) Scriei definiia complet a unui subprogram sub care primete prin intermediul singurului
su parametru n un numr natural de maximum 8 cifre i care returneaz cel mai mare
termen al irului f care este mai mic sau cel mult egal cu n.
Exemplu: dac n=83 atunci subprogramul va returna valoarea 80. (4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural s (s10000000)
i determin scrierea lui s ca sum de termeni distinci ai irului dat folosind apeluri utile ale
subprogramului sub. Numerele astfel determinate se vor scrie pe ecran, pe aceeai linie
separate prin cte un spaiu. i
Exemplu: dac valoarea citit de la tastatur este 63, se va afia:
40 20 3 (6p.)ce const eficiena(4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Utiliznd metoda backtracking sunt generate numerele de 3 cifre care au cifrele n ordine
cresctoare, iar cifrele aflate pe poziii consecutive sunt de paritate diferit. tiind c primele
cinci soluii generate sunt, n aceast ordine, 123, 125, 127, 129, 145, care este cel de al
8-lea numr generat? (4p.)
a.
169
b.
149
c.
167
d.
147

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f,
descris alturat. Ce se va afia
n urma apelului f(3);? (6p.)
void f(int n)
{ if (n!=0)
{ if (n%2==0)
cout<<n<< ; | printf("%d ",n);
f(n-1);
cout<<n<< ; | printf("%d ",n);
}
else cout<<endl; | printf("\n");
}
3. Scriei definiia complet a subprogramului sub cu un singur parametru n numr natural
nenul (1<n50); subprogramul citete n numere naturale de la tastatur cu maximum 4 cifre
fiecare i returneaz suma numerelor citite care au proprietatea c sunt ptrate perfecte.
Exemplu: dac n=4 i numerele citite sunt 4, 5, 9, 3 la apelul subprogramului se va returna
valoarea 13. (10p.)
4. Se consider dou tablouri unidimensionale a i b fiecare avnd numere naturale de
maximum patru cifre, ordonate cresctor. Tabloul a conine n (1<n<100) numere pare, iar
tabloul b conine m (1<m<100) numere impare.
a) Scriei un program C/C++ care citete de la tastatur valoarea lui n i cele n elemente ale
tabloului a, apoi valoarea lui m i cele m elemente ale tabloului b dup care scrie n fiierul
BAC.TXT un numr maxim de elemente ale tablourilor date, numerele fiiind scrise n ordine
cresctoare, separate prin cte un spaiu, iar cele aflate pe poziii consecutive fiind de
paritate diferit. Programul va utiliza un algoritm eficient din punct de vedere al timpului de
executare.
Exemplu: pentru n=6, m=5 i tablourile a=(2,4,8,10,14,16) i b=(3,5,7,11,15 )
fiierul BAC.TXT va avea urmtorul coninut : 2 3 4 5 8 11 14 15 16 (6p.)
b) Descriei succint, n limbaj natural, algoritmul pe baza cruia a fost scris programul de la
punctul a), explicnd n ce const eficiena metodei utilizate. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Se consider subprogramul f cu definiia
alturat. Ce valoare are f(1213111,1)?
(4p.)
int f (long int n, int k){
if (n!=0)
if(n%10==k)
return 1+f(n/10,k);
else return 0;
else return 0;}
a.
5
b.
3
c.
2
d.
1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Utiliznd metoda backtracking, sunt generate toate numerele de 3 cifre, astfel nct cifrele
sunt n ordine cresctoare, iar cifrele aflate pe poziii consecutive sunt de paritate diferit.
tiind c primele trei soluii generate sunt, n aceast ordine, 123, 125, 127, cte dintre
toate numerele generate au suma cifrelor egal cu 6? (6p.)
3.
Scriei definiia complet a subprogramului sub cu doi parametri: n (numr natural,
0<n50) i k (numr natural, 0<k20). Subprogramul determin afiarea pe o linie nou a
ecranului, n ordine descresctoare, a primelor n numere naturale nenule divizibile cu k.
Numerele vor fi separate prin cte spaiu.
Exemplu: dac n=3 i k=5 la apelul subprogramului se va afia pe ecran:
15 10 5 (10p.)
4.
Se consider fiierul BAC.TXT ce conine cel mult un milion de numere naturale separate
prin spatii, fiecare numr avnd cel mult nou cifre.
a) Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i determin,
folosind un algoritm eficient din punct de vedere timpului de executare, cele mai mari dou
numere de trei cifre care nu se afl n fiier. Dac fiierul conine toate numerele de cte trei
cifre atunci programul va afia pe ecran valoarea 0.
Exemplu: dac fiierul BAC.TXT conine numerele:
12 2345 123 67 989 6 999 123 67 989 999
atunci programul va afia
998 997 (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Se consider subprogramul cu definiia
alturat. Ce valoare are f(3,1)?
(4p.)
int f(int n,int y)
{ if(n!=0)
{ y=y+1;
return y+f(n-1,y);
}
else return 0;
}
a.
9
b.
6
c.
7
d.
8

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Folosind tehnica backtracking, un elev a scris un program care genereaz toate numerele
de cte n cifre (1n9), cifrele fiind n ordine strict cresctoare. Dac n este egal cu 5, cte
dintre numerele generate au prima cifr 4? (6p.)
3. Scriei definiia complet a subprogramului sub cu trei parametri: n (numr natural,
5<n30000), a i b; subprogramul furnizeaz prin intermediul parametrilor a i b cele mai
mari dou numere prime distincte mai mici dect n.
Exemplu: dac n= 28 la apelul subprogramului se va furniza prin parametrul a valoarea
23 i prin parametrul b valoarea 19. (10p.)
4. Evidena produselor vndute de o societate comercial este pstrat n fiierul
PRODUSE.TXT. Pentru fiecare produs se cunoate tipul produsului (un numr natural de cel
mult 4 cifre), cantitatea exprimat in kilograme (un numr natural mai mic sau egal cu 100)
i preul unui kilogram (un numr natural mai mic sau egal cu 100).
Produsele de acelai tip pot fi vndute n cantiti diferite, fiecare vnzare fiind nregistrat
separat.
Fiierul PRODUSE.TXT are cel mult 200000 de linii i fiecare linie conine trei numere
naturale, separate prin cte un spaiu, ce reprezint, n aceast ordine tipul, cantitatea i
preul de vnzare al unui produs la un moment dat.
a) S se scrie un program C/C++, care utiliznd un algoritm eficient din punct de vedere al
timpului de executare, determin pentru fiecare tip de produs vndut suma total obinut
n urma vnzrilor. Programul va afia pe cte o linie a ecranului tipul produsului i suma
total obinut, separate prin cte un spaiu, ca n exemplu.
Exemplu: dac fiierul PRODUSE.TXT are coninutul alturat, programul va afia
numerele urmtoare:
1 150
2 30
3 5 (6p.)
3 1 5
1 20 5
2 10 3
1 10 5

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena (3 - 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Un algoritm de tip backtracking genereaz, n ordine lexicografic, toate irurile de 5 cifre 0
i 1 cu proprietatea c nu exist mai mult de dou cifre 0 pe poziii consecutive. Primele 7
soluii generate sunt: 00100, 00101, 00110, 00111, 01001, 01010, 01011. Care este a
8-a soluie generat de acest algoritm? (4p.)
a.
01110
b.
01100
c.
01011
d.
01101

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Care este valoarea expresiei f(23159)
pentru funcia f, cu definiia alturat? (6p.)
int f(int n){
int c;
if (n==0) return 9;
else
{c=f(n/10);
if (n%10<c) return n%10;
else return c;
}
}
Fiierul text numere.txt conine pe prima sa linie un numr natural n (n<30000), iar pe a
doua sa linie, n numere ntregi, avnd maximum 4 cifre fiecare. Se cere s se afieze pe
ecran un ir de n numere ntregi, cu proprietatea c valoarea termenului de pe poziia i
(i=1,2,,n) din acest ir este egal cu cea mai mare dintre primele i valori de pe a doua
linie a fiierului numere.txt.
a) Descriei pe scurt un algoritm de rezolvare, eficient din punct de vedere al timpului de
executare i al spaiului de memorie utilizat, explicnd n ce const eficiena sa. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris. (6p.)
3.
Exemplu: dac fiierul numere.txt are coninutul
alturat, se afieaz pe ecran numerele
4 6 6 7 8 8 8 8 8 9 10 10
12
4 6 3 7 8 1 6 2 7 9 10 8
4. a) Scriei doar antetul funciei sum care primete ca parametru un numr natural x cu
maximum 9 cifre i returneaz suma divizorilor numrului x.
Exemplu: sum(6) are valoarea 12 (=1+2+3+6). (3p.)
b) S se scrie un program C/C++ care citete de la tastatur un numr natural nenul n i apoi
n de numere naturale cu maxim 9 cifre fiecare. Programul calculeaz, folosind apeluri ale
funciei sum, i afieaz pe ecran cte numere prime conine irul citit.
Exemplu: pentru n=5 i valorile 12 3 9 7 1 se va afia pe ecran valoarea 2 (n irul dat
exist dou numere prime i anume 3 i 7). (7p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se consider subprogramul P, definit alturat.
tiind c valoarea variabilei ntregi a este inainte
de apel 4, care este valoarea ei dup revenirea din
apelul P(a)? (4p.)
void P(int &x)
{ x=x+5; }
a.
10
b.
4
c.
9
d.
5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru a scrie valoarea 10 ca sum de numere prime se folosete metoda backtracking i
se genereaz, n aceast ordine, sumele distincte: 2+2+2+2+2, 2+2+3+3, 2+3+5, 3+7,
5+5. Folosind exact aceeai metod, se scrie valoarea 9 ca sum de numere prime. Care
sunt primele trei soluii, n ordinea generrii lor? (6p.)
3. Fiierele text NR1.TXT i NR2.TXT conin, separate prin cte un spaiu, mai multe numere
ntregi de cel mult 9 cifre fiecare. Fiecare dintre fiiere conine cel mult 100 de valori i
numerele din fiecare fiier sunt ordonate strict cresctor. Se cere s se afieze pe ecran, n
ordine cresctoare, numerele divizibile cu 5 care se gsesc doar n unul din cele dou
fiiere.
Exemplu: dac fiierul NR1.TXT conine numerele 1 2 3 4 7 20 60, iar fiierul
NR2.TXT conine numerele 3 5 7 8 9 10 12 20 24, atunci se vor afia pe ecran
valorile 5 10 60.
a) Descriei un algoritm de rezolvare a acestei probleme, eficient din punct de vedere al
timpului de executare i al spaiului de memorie utilizat, explicnd n ce const eficiena
acestuia. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris. (6p.)
4. Scriei un program C/C++ care citete de la tastatur o valoare natural nenul n (n20),
apoi un ir de n numere naturale, avnd fiecare exact 5 cifre, i determin i afieaz pe
ecran cte dintre cele n numere citite au toate cifrele egale.
Exemplu: pentru n=5 i numerele 33333 12423 59824 11111 33443 se va afia
valoarea 2 (exist dou numere cu toate cifrele egale i anume 33333 i 11111). (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Fie subprogramul fct definit alturat, parial. Iniial, variabile ntregi
a, b i c au valorile a=8, b=31 i c=9, iar dup apelul fct(a,b,c),
valorile celor trei variabile sunt a=9, b=31 i c=40. Care poate fi
antetul subgrogramului fct? (4p.)
void fct(....)
{ x++; y--;
z=x+y;
}
a.
void fct(int &x,int &y,int &z)
b.
void fct(int x,int &y,int &z)
c.
void fct(int x,int y,int z)
d.
void fct(int &x,int y,int &z)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Trei biei Alin, Bogdan i Ciprian, si trei fete Delia, Elena i Felicia, trebuie s
formeze o echip de 3 copii, care s participe la un concurs. Echipa trebuie s fie mixt
(adic s conin cel puin o fat i cel puin un biat). Ordinea copiilor n echip este
important deoarece aceasta va fi ordinea de intrare a copiilor n concurs (de exemplu
echipa Alin, Bogdan, Delia este diferit de echipa Bogdan, Alin, Delia). Cte echipe
se pot forma, astfel nct din ele s fac parte simultan Alin i Bogdan? (6p.)
3. Se consider irul 1, 2,1, 3,2,1, 4,3,2,1, ...
construit astfel: prima grup este format din numrul 1, a doua grup este format din
numerele 2 i 1, iar grupa a k-a, este format din numerele k, k-1,..., 1.
Se cere s se citesc de la tastatur un numr natural n (n1000) i s se afieze pe ecran
cel de al n-lea termen al irului dat.
a) Descriei un algoritm de rezolvare a acestei probleme, eficient din punct de vedere al
timpului de executare i al spaiului de memorie, explicnd n ce const eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris (6p.)
4. Pe prima linie a fiierului text BAC.IN se gsesc, separate prin cte un spaiu, mai multe
numere naturale de cel mult 9 cifre fiecare. Scriei un program C/C++ care citete numerele
din acest fiier, elimin toate cifrele impare din fiecare dintre aceste numere i apoi scrie n
fiierul text BAC.OUT numerele astfel obinute. Dac un numr din fiierul BAC.IN conine
doar cifre impare i cifra 0, acesta nu va mai aprea deloc n fiierul de ieire. (10p.)
Exemplu: dac fiierul BAC.IN conine numerele 25 7 38 1030 45127 0 35 60 15
atunci BAC.OUT va avea coninutul: 2 8 42 60.

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Care dintre urmtoarele variante reprezint antetul corect al unui subprogram care primete
prin parametrii x i y dou numere ntregi i furnizeaz prin parametrul m cea mai mic
dintre cele dou valori x i y? (4p.)
a.
int minim(int x,int y,int m)
b.
void minim(int x,int y,int &m)
c.
int minim(int x,int y)
d.
void minim(int x,int y,int m)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru funciile f1 i f2 definite
alturat, stabilii care este valoarea lui
f2(41382)? (6p.)
long f1(int c)
{ if (c%2==1) return 1;
else return 2;
}

long f2(long n)
{ if (n==0) return 0;
else return f1(n%10)+f2(n/10);
}
3. Se citete de la tastatur un numr natural n (n500) i apoi n cifre. Se cere s se afieze
pe ecran cele n cifre citite, n ordine cresctoare, separate prin cte un spaiu.
Exemplu: pentru n=19 i cifrele 3 3 0 9 2 1 2 1 3 7 1 5 2 7 1 0 3 2 3 se va
afia pe ecran 0 0 1 1 1 1 2 2 2 2 3 3 3 3 3 5 7 7 9.
a) Descriei pe scurt un algoritm de rezolvare al problemei, eficient din punct de vedere al
spaiului de memorie utilizat i al timpului de executare, explicnd n ce const eficiena
metodei alese. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris. (6p.)
Fiierul text BAC.TXT conine mai multe numere naturale, cu cel mult 6 cifre fiecare, cte
un numr pe fiecare linie a fiierului.
4.
Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i le
afieaz pe ecran, cte 5 pe fiecare linie, separate prin cte un spaiu, cu excepia
ultimei linii care poate conine mai puin de 5 numere. Programul va afia apoi pe
ecran, pe o linie separat, cte numere din fiier au suma cifrelor par.
Exemplu: dac fiierul are coninutul alturat, pe ecran se vor afia numerele
de mai jos:
11 21 30 40 51
16 17 10 1
4 (10p.)
11
21
30
40
51
16
17
10
1

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Cte numere cu exact 3 cifre pot fi construite folosind doar cifre pare? (4p.)
a.
125
b.
100
c.
64
d.
128

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
Pentru funciile f i g definite mai jos, stabilii care este rezultatul returnat la apelul f(6)?
(6p.)
2.
long g(long x)
{ if (x>9)
return (x/10 + x%10);
else
return x
}
long f(int c)
{ if (c<1)
return 1;
else
return g(c+f(c-1));
}
3. Scriei un program C/C++ care citete de la tastatur un numr natural n (n32000) i
afieaz pe ecran numrul natural din intervalul nchis [1,n] care are cei mai muli divizori.
Dac exist mai multe numere cu aceast proprietate se va afia cel mai mic dintre ele.
Exemplu: pentru n=20 se va afia valoarea 12 (12, 18 i 20 au cte 6 divizori, iar 12 este
cel mai mic dintre ele). (10p.)
4. n fiierul text BAC.IN se gsesc, pe o singur linie, separate prin cte un spaiu, mai multe
numere naturale de cel mult 6 cifre fiecare. Se cere s se determine i s se afieze pe
ecran, separate printr-un spaiu, ultimele dou numere prime (nu neaprat distincte) din
fiierul BAC.IN. Dac n fiier se gsete un singur numr prim sau niciun numr prim se va
scrie pe ecran mesajul Numere prime insuficiente.
Exemplu: dac fiierul BAC.IN conine valorile: 12 5 68 13 8 17 9 31 42 se va
afia 17 31.
a) Descriei n limbaj natural un algoritm eficient, din punct de vedere al spaiului de
memorie i al timpului de executare, pentru rezolvarea acestei probleme, explicnd n ce
const eficiena acestuia. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris. (6p.)



v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Funcia F are definiia alturat. Ce valoare
are F(3)? (4p.)
int F(int n)
{if(n==0 || n==1) return 1;
else
return 2*F(n-1)+2*F(n-2);}
a.
1
b.
12
c.
6
d.
10

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare
2. Un algoritm genereaz n ordine cresctoare toate numerele de n cifre, folosind doar cifrele
3, 5 i 7. Dac pentru n=5, primele 5 soluii generate sunt 33333, 33335, 33337,
33353, 33355, precizai care sunt ultimele 3 soluii generate, n ordinea generrii. (6p.)
3. Scriei definiia complet a subprogramului multiplu care are 3 parametri: a, prin care
primete un tablou unidimensional cu maximum 100 de numere naturale mai mici dect
1000, n, numrul de elemente ale tabloului i k, un numr natural (k9). Subprogramul
returneaz numrul de elemente din tablou care sunt multipli ai numrului k i au ultima
cifr egal cu k.
Exemplu: dac n=6, a=(2,273,63,83,93,123), iar k=3, subprogramul va returna
valoarea 4. (10p.)
4. n fiierul numere.txt sunt memorate maximum 10000 de numere naturale cu cel mult 9
cifre fiecare. Fiecare linie a fiierului conine cte un numr. Se cere afiarea pe ecran, n
ordine descresctoare, a tuturor cifrelor care apar n numerele din fiier. Alegei un algoritm
de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de execuie.
Exemplu: dac fiierul numere.txt conine:
267
39628
79
se va tipri 9987766322.
a) Descriei succinct, n limbaj natural, strategia de rezolvare i justificai eficiena
algoritmului ales. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Subprogramul f are definiia
alturat. Ce se va afia n urma
apelului f(12345)?
(4p.)
void f(long n)
{if (n>9)
{cout<<n/100; | printf(%d,n/100);
f(n/10);
}
}
a.
1231210
b.
123121
c.
1234123121
d.
123

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare
2. Un algoritm genereaz n ordine descresctoare toate numerele de 5 cifre, fiecare dintre ele
avnd cifrele n ordine strict cresctoare. tiind c primele 5 soluii generate sunt 56789,
46789, 45789, 45689, 45679, precizai care sunt ultimele 3 soluii generate, n ordinea
generrii. (6p.)
3. Scriei definiia complet a subprogramului interval care are 2 parametri prin care
primete un tablou unidimensional cu maximum 100 de numere naturale mai mici dect
1000 i numrul de elemente din tabloul unidimensional. Subprogramul returneaz
numrul de elemente din tabloul unidimensional care aparin intervalului nchis determinat
de primul i respectiv ultimul element al tabloului.
Exemplu: dac tabloul are 6 elemente i este de forma (12,27,6,8,9,2), subprogramul
va returna valoarea 5. (10p.)
4. n fiierul numere.txt pe prima linie este memorat un numr natural n (n10000), iar pe
linia urmtoare un ir de n numere naturale distincte dou cte dou, separate prin cte un
spaiu, cu maximum 4 cifre fiecare. Se cere afiarea pe ecran a poziiei pe care s-ar gsi
primul element din irul aflat pe linia a doua a fiierului, n cazul n care irul ar fi ordonat
cresctor. Numerotarea poziiilor elementelor n cadrul irului este de la 1 la n. Alegei un
algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
execuie.
Exemplu: dac fiierul numere.txt conine:
6
267 13 45 628 7 79
se va afia 5, deoarece primul element din irul iniial, 267, s-ar gsi pe poziia a cincea n
irul ordonat cresctor.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Funcia f are definiia alturat. Ce se
va afia n urma apelului
f(12345,0);? (4p.)
void f(long n, int i)
{if (i<n%10)
{cout<<n%10; | printf(%d,n%10);
f(n/10,i+1);
}
}
a.
54321
b.
543
c.
54
d.
5432

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare
2. Un algoritm genereaz, n ordine lexicografic, toate irurile alctuite din cte n cifre binare
(0 i 1). tiind c pentru n=5, primele 4 soluii generate sunt 00000, 00001, 00010, 00011,
precizai care sunt ultimele 3 soluii generate, n ordinea obinerii lor. (6p.)
3. Scriei definiia complet a subprogramului count care are 2 parametri prin care primete
un tablou unidimensional cu maximum 100 de numere reale i numrul de elemente din
tablou. Subprogramul returneaz numrul de elemente din tabloul unidimensional care sunt
mai mari sau cel puin egale cu media aritmetic a tuturor elementelor din tablou.
Exemplu: dac tabloul are 6 elemente i este de forma (12, 7.5, 6.5, 3, 8.5, 7.5),
subprogramul va returna valoarea 4. (10p.)
4. n fiierul numere.txt este memorat un ir de maximum 10000 numere naturale, distincte
dou cte dou, cu maximum 4 cifre fiecare, separate prin cte un spaiu. Pentru un numr
k citit de la tastatur, se cere afiarea pe ecran a poziiei pe care se va gsi acesta n irul
de numere din fiier, dac irul ar fi ordonat descresctor, sau mesajul nu exist, dac
numrul k nu se afl printre numerele din fiier. Alegei un algoritm eficient de rezolvare din
punct de vedere al memoriei utilizate i al timpului de execuie.
Exemplu: dac fiierul numere.txt conine numerele 26 2 5 30 13 45 62 7 79, iar
k are valoarea 13, se va afia 6 deoarece 13 s-ar gsi pe poziia a asea n irul
ordonat descresctor.
a) Descriei succinct, n limbaj natural, strategia de rezolvare i justificai eficiena
algoritmului ales. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Funcia F are definiia alturat. Ce valoare
are F(18)? (4p.)
int F(int x){
if (x<=1) return x;
else
return x+F(x-2);}
a.
90
b.
171
c.
1
d.
18

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare
2. Un algoritm genereaz n ordine cresctoare, toate numerele de n cifre (n<9), cu cifre
distincte, care nu au dou cifre pare alturate. Dac pentru n=5, primele 5 soluii generate
sunt 10325, 10327, 10329, 10345, 10347, precizai care sunt urmtoarele 3 soluii
generate, n ordinea obinerii lor. (6p.)
3. Subprogramul aranjare are 2 parametri: a prin care primete un tablou unidimensional cu
maximum 100 de numere reale i n, numrul de elemente din tablou. Subprogramul
rearanjeaz elementele tabloului unidimensional astfel nct toate valorile negative s se
afle pe primele poziii, iar valorile pozitive n continuarea celor negative. Ordinea n cadrul
secvenei de elemente pozitive, respectiv n cadrul secvenei de elemente negative, poate fi
oricare. Tabloul modificat va fi furnizat tot prin intermediul parametrului a.
Exemplu: dac tabloul are 6 elemente i este de forma (12, -7.5, 6.5, -3, -8,
7.5), dup apel, acesta ar putea fi: (-7.5, -3, -8, 12, 6.5, 7.5).
Scriei definiia complet a subprogramului aranjare. (10p.)
4. n fiecare dintre fiierele nr1.txt i nr2.txt este memorat pe prima linie cte o
valoare natural n de cel mult 8 cifre, iar pe linia urmtoare sunt memorate cte n numere
naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin cte un
spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict cresctoare,
a tuturor numerelor aflate pe a a doua linie n cel puin unul dintre cele dou fiiere. n cazul
n care un numr apare n ambele fiiere, el va fi afiat o singur dat. Alegei un algoritm
de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de execuie.
Exemplu: pentru urmtoarele fiiere:
nr1.txt nr2.txt
5 6
3 6 8 9 12 2 3 5 7 9 13
se va afia 2 3 5 6 7 8 9 12 13.
a) Descriei succinct, n limbaj natural, strategia de rezolvare i justificai eficiena
algoritmului ales. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Funcia F are definiia alturat. Ce valoare
are F(5)? (4p.)
int F(int x)
{if(x!=0) return x+F(x-1);
else
return x;
}
a.
5
b.
10
c.
15
d.
6

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare
2. Un algoritm genereaz n ordine descresctoare, toate numerele de n cifre (n<9), cu cifrele
n ordine strict cresctoare, care nu au dou cifre pare alturate. Dac pentru n=5, primele
5 soluii generate sunt 56789, 45789, 45679, 45678, 36789, precizai care sunt
urmtoarele 3 soluii generate, n ordinea obinerii lor. (6p.)
3. Subprogramul nule are 2 parametri: a, prin care primete un tablou unidimensional cu
maximum 100 de numere ntregi, cu cel mult 4 cifre fiecare i n, numrul de elemente din
tablou. Subprogramul rearanjeaz elementele tabloului unidimensional astfel nct toate
valorile nule s se afle la sfritul tabloului. Ordinea n cadrul secvenei de elemente nenule
poate fi oricare. Tabloul modificat este furnizat tot prin parametrul a.
Exemplu: dac n=6, a=(12,0,0,-3,-8,0), dup apel, acesta ar putea fi:
a=(12,-3,-8,0,0,0).
Scriei definiia complet a subprogramului nule. (10p.)
4. n fiecare dintre fiierele nr1.txt i nr2.txt este memorat pe prima linie cte o
valoare natural n de cel mult 8 cifre, iar pe linia urmtoare sunt memorate cte n numere
naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin cte un
spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict cresctoare,
a tuturor numerelor aflate pe a a doua linie att n primul ct i n al doilea fiier. Alegei un
algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
execuie.
Exemplu: pentru urmtoarele fiiere:
nr1.txt nr2.txt
5 6
3 6 8 9 12 2 3 5 7 9 13
se va afia 3 9.
a) Descriei succinct, n limbaj natural, strategia de rezolvare i justificai eficiena
algoritmului ales. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Care din urmtoarele probleme referitoare la mulimea de numere reale M={x
1
, x
2
, , x
n
}
(n>1000) poate fi rezolvat cu un algoritm care are un numr minim de pai? (4p.)
a. sortarea elementelor mulimii M b. generarea elementelor produsului
cartezian M x M
c. determinarea elementului minim al
mulimii M
d. generarea tuturor permutrilor mulimii M

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul, f, definit
alturat. Ce valoare are f(100)? (6p.)
int f(int n)
{ if(n==0) return 0;
else return n%2+f(n/2);
}
3. Scriei definiia complet a unui subprogram i_prim care primete prin singurul su
parametru, n, un numr natural din intervalul [2,30000] i returneaz diferena minim
p2-p1 n care p1 i p2 sunt numere prime i p1np2.
Exemplu: dac n=20 atunci i_prim(n)=4, valoare obinut pentru p1=19 i p2=23.
(10p.)
Fiierul BAC.TXT conine pe prima linie dou numere naturale n i k separat de un spaiu
(3n10000, 2kn/2), iar pe a doua linie un ir de n numere naturale x
1
, x
2
, ..., x
n

separate prin cte un spaiu, fiecare numr din acest ir avnd cel mult patru cifre.
a) Scriei un program C/C++ care citete numerele din fiier i determin, utiliznd o
metod eficient din punct de vedere al timpului de executare, cel mai mic indice i (1in-
k+1) pentru care media aritmetic a numerelor x
i
, x
i+1
, ..., x
i+k-1
este maxim. Programul
afieaz valoarea lui i pe ecran.
Exemplu: pentru fiierul alturat se afieaz 2, deoarece media
maxim se obine pentru 9, 4, 7. (6p.)
7 3
2 9 4 7 5 2 9
4.
b) Explicai succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. In timpul procesului de generare a permutrilor mulimii {1,2,,n} prin metoda
backtracking, n tabloul unidimensional x este plasat un element x
k
(1kn). Acesta este
considerat valid dac este ndeplinit condiia: (6p.)
a. x
k
{x
1
, x
2
, , x
k-1
} b. x
k
x
k-1

c. x
k
{x
1
, x
2
, , x
n
} d. x
k
x
k-1
i x
k
x
k+1


Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Considerm subprogramul recursiv definit
alturat. Ce se va afia n urma apelului:
f(C) (4p.)
void f(char c)
{ if (c>A) f(c-1);
cout<<c; | printf(%c,c);
if (c>A) f(c-1);
}
3. a) Scriei definiia complet a unui subprogram, nz, cu un parametru ntreg n (0<n32000),
care returneaz numrul zerourilor de la sfritul numrului n!. (6p.)
b) Scriei o secven de instruciuni prin care, fiind dat un numr natural k (0<k1500), s
se determine, folosind apeluri ale subprogramului nz, cel mai mic numr natural n pentru
care n! are cel puin k zerouri la sfrit (4p.)
4. Scriei programul C/C++ care citete din fiierul BAC.TXT numrul ntreg n (1n10000) i
un ir de n perechi de numere ntregi a b (1ab32000), fiecare pereche fiind scris pe o
linie nou a fiierului, cu un spaiu ntre cele dou numere. Programul afieaz pe ecran
pentru fiecare pereche a,b cel mai mare numr natural din intervalul nchis [a,b]care este
o putere a lui 2 sau numrul 0 dac nu exist nicio putere a lui 2 n intervalul respectiv.
Exemplu: dac fiierul BAC.TXT conine numerele
3
2 69
10 20
19 25
se va afia: 64 16 0. (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Algoritmul de generare a tuturor numerelor de 5 cifre nenule, fiecare avnd cifrele ordonate
strict cresctor, este echivalent cu algoritmul de generare a: (6p.)
a. submulimilor unei mulimi cu 5 elemente b. produsului cartezian a unor mulimi de
cifre
c. aranjamentelor de 9 elemente luate cte 5 d. combinrilor de 9 elemente luate cte 5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru subprogramul suma definit
alturat, scriei valoarea expresiei
suma(5,4). (4p.)
int suma (int a,int b)
{ if (a==0 && b==0) return 0;
else if (a==0) return 1+suma(a,b-1);
else return 1+suma(a-1,b);
}
3. a) Scriei definiia complet a subprogramului shift care primete prin intermediul
parametrului n o valoare natural nenul (n100), iar prin intermediul parametrului x, cele n
componente ale unui tablou unidimensional. Fiecare component a acestui tablou este un
numr ntreg care are cel mult 4 cifre. Subprogramul permut circular cu o poziie spre
stnga, elementele tabloului x. i furnizeaz tabloul modificat tot prin parametrul x.
Exemplu: dac nainte de apel x=(1,2,3,4), dup apel x=(2,3,4,1). (4p.)
b) Scriei un program C/C++ care citete de la tastatur o valoarea natural nenul n
(n100), apoi cele n elemente ale unui tablou unidimensional x. Programul va inversa
ordinea elementelor tabloului x folosind apeluri utile ale subprogramului shift i va afia
pe ecran, separate prin cte un spaiu, elementele tabloului rezultat n urma acestei
prelucrri.
Exemplu: dac se citesc pentru n valoarea 5, iar tabloul x este (1,2,3,4,5) programul
va determina ca x s devin (5,4,3,2,1). (6p.)
Fiierul BAC.TXT conine pe prima linie un numr natural nenul n (1n1000), iar pe
fiecare dintre urmtoarele n linii, cte dou numere ntregi a i b (1ab32000), fiecare
pereche reprezentnd un interval nchis de forma [a,b]. Scriei un program C/C++ care
determin intervalele care au proprietatea c intersecia cu oricare dintre celelalte n-1
intervale este vid i afieaz pe cte o linie a ecranului, separate printr-un spaiu,
numerele care reprezint capetele intervalelor determinate. (10p.)
4.
Exemplu: dac fiierul BAC.TXT are coninutulalturat, pe ecran se va
afia:
2 6
17 20
4
17 20
2 6
10 15
8 16

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Genernd irurile de maximum 3 caractere distincte din mulimea {A,B,C,D,E}, ordonate
lexicografic, obinem succesiv: A, AB, ABC, ABD,. Ce ir va fi generat dup BAE? (4p.)
a.
BCA
b.
CAB
c.
BC
d.
BEA

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Funcia f are definiia alturat.
a) Ce valoarea are f(17)? (3p.)
b) Ce valoare are f(22)? (3p.)
int f(int n)
{if (n<=9) return 0;
if (n%4==0) return 0;
return 1+f(n-3);
}
3. a) Scriei definiia complet a subprogramului p care primete prin intermediul parametrului
n un numr natural nenul (n100), iar prin intermediul parametrului x un tablou
unidimensional cu n componente ntregi, de maximum patru cifre fiecare. Subprogramul
furnizeaz prin intermediul parametrului mini valoarea minim din tabloul x, prin
intermediul parametrului maxi valoarea maxim din x, iar prin intermediul parametrului sum
suma elementelor din tabloul x. (6p.)
b) Scriei un program C/C++ care citete de la tastatur o valoarea natural nenul n,
(3n100), apoi cele n elemente, distincte, ale unui tablou unidimensional x. Fiecare dintre
aceste elemente este un numr natural avnd cel mult patru cifre. Folosind apeluri utile ale
subprogramului p, programul calculeaz i afieaz pe ecran media aritmetic a
elementelor care ar rmne n tabloul x dac s-ar elimina valoarea minim i valoarea
maxim din tablou. Valoarea afiat va avea cel mult 3 cifre dup virgul.
Exemplu: dac se citesc pentru n valoarea 5, iar pentru tabloul x valorile (1,9,4,8,5),
programul va afia una dintre valorile 5.667 sau 5.666. (4p.)
Fiierul bac.txt conine pe prima linie numrul natural n, 1n30000, pe urmtoarele n
linii un tablou unidimensional de n numere ntregi, ordonate cresctor, iar pe ultima linie
dou numere ntregi a i b (ab) separate de un spaiu. Fiecare dintre cele n numere,
precum i valorile a i b, au cel mult patru cifre.
a) Scriei un program C/C++, eficient din punct de vedere al timpului de executare, care
afieaz pe ecran cel mai mic numr ntreg din intervalul nchis [a,b] care se gsete n
tabloul dat. Dac nu exist un astfel de numr programul afieaz textul NU.
4.
Exemplu: dac fiierul bac.txt are coninutul alturat, programul afieaz
valoarea 11 (6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena
ei. (4p.)
4
-2
7
11
35
8 15

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Un program citete o valoare natural nenul impar pentru n i apoi genereaz i afieaz
n ordine cresctoare lexicografic toate combinaiile formate din n cifre care ndeplinesc
urmtoarele proprieti:
- conin doar valori pozitive sau nule;
- ncep i se termin cu 0;
- modulul diferenei ntre oricare dou cifre alturate dintr-o combinaie este 1.
Astfel, pentru n=5, combinaiile afiate sunt, n ordine, urmtoarele: 01010, 01210. Dac
se ruleaz acest program i se citete pentru n valoarea 7, imediat dup combinaia
0101210 va fi afiat combinaia: (4p.)
a.
0121210
b.
0123210
c.
0111210
d.
0121010

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Funcia f are definiia alturat:
a) Ce valoare are f(16)? (3p.)
b) Scriei cea mai mare valoare de dou cifre pe care o
poate avea n astfel nct f(n) s fie egal cu 2. (3p.)
int f(int n)
{ if (n<=0) return -1;
if (n%2==0) return 0;
if (n%3==0) return 0;
return 1+f(n-10);
}
3. Subprogramul f primete prin intermediul parametrului n un numr natural nenul (1n9),
iar prin intermediul parametrului a, un tablou unidimensional care conine n valori naturale,
fiecare dintre acestea reprezentnd cte o cifr a unui numr. Astfel, a
0
reprezint cifra
unitilor numrului, a
1
cifra zecilor etc.
Subprogramul furnizeaz prin parametrul k o valoare natural egal cu numrul obinut din
cifrele pare reinute n tabloul a sau valoarea -1 dac n tablou nu exist nicio cifr par.
Scriei definiia complet a subprogramului f.
Exemple: dac subprogramul se apeleaz pentru n=6 i pentru taboul a avnd valorile
(2,3,5,6,4,1), parametrul k va furniza valoarea 462. Dac subprogramul se apeleaz
pentru n=4 i pentru a reinnd valorile (0,0,1,1), k va furniza valoarea 0. Dac
subprogramul se apeleaz pentru n=3 i pentru a reinnd valorile (3,7,1), k va furniza
valoarea -1. (10p.)
4. Fiierul text NUMAR.TXT conine pe prima linie un numr real pozitiv x care are cel mult
dou cifre la partea ntreag i cel mult apte cifre dup punctul zecimal..
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al memoriei utilizate, afieaz pe ecran separate printr-un spaiu,
dou numere naturale al cror raport este egal cu x i a cror diferen absolut este
minim.
Exemplu: dac fiierul conine valoarea alturat, se vor afia pe ecran
numerele 3 8. (6p.)
0.375

b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Pentru generarea numerelor cu n cifre formate cu elementele mulimii {0,2,8} se
utilizeaz un algoritm backtracking care, pentru n=2, genereaz, n ordine, numerele
20,22,28,80,82,88.
Dac n=4 i se utilizeaz acelai algoritm, care este numrul generat imediat dup numrul
2008 ? (4p.)
a.
2002
b.
2020
c.
2080
d.
8002

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul afis este definit alturat.
Ce se afieaz ca urmare a apelului afis(8);
(4p.)


void afis (int n)
{ cout<<n; | printf(%d,n);
for (int i=n/2;i>=1;i--)
if(n%i==0)afis(i);
}
3. Scriei programul C/C++ care citete de la tastatur dou numere naturale nenule n i k i
afieaz pe ecran, separate prin cte un spaiu, n ordine descresctoare, cei mai mici k
multipli aturali nenuli ai numrului n.
Exemplu: pentru n=6 i k=5 se afieaz 30 24 18 12 6. (6p.)
4. a) Scriei definiia complet a subprogramului sterge, care primete prin cei 4 parametri
v,n,i,j:
- v,un tablou unidimensional cu maximum 100 de elemente ntregi din intervalul [-1000;1000]
- n , un numr natural reprezentnd numrul de elemente din tabloul v
- i i j dou valori naturale cu 1ijn
i elimin din tabloul v elementele v
i
,v
i+1
,,v
j
actualiznd valoarea parametrului n. (6p.)
b) Fiierul NUMERE.IN conine pe prima linie un numr natural nenul n (1n100) i pe
urmtoarea linie n numere ntregi din intervalul [-1000;1000], separate prin cte un spaiu.
Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n,
construiete n memorie un tablou unidimensional v cu cele n numere ntregi aflate pe linia a
doua n fiier i utilizeaz apeluri utile ale subprogramului sterge pentru a elimina din
tablou un numr minim de elemente astfel nct s nu existe dou elemente alturate cu
aceeai valoare. Elementele tabloului obinut se afieaz pe ecran, separate prin cte un
spaiu.
Exemplu: Dac fiierul NUMERE.IN are coninutul:
12
10 10 2 2 19 9 9 9 9 15 15 15 atunci se afieaz 10 2 19 9 15. (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Pentru generarea numerelor cu n cifre formate cu elementele mulimii {0,2,8} se
utilizeaz un algoritm backtracking care, pentru n=2, genereaz, n ordine, numerele
20,22,28,80,82,88.
Dac n=4 i se utilizeaz acelai algoritm, precizai cte numere generate sunt divizibile
cu 100? (4p.)
a.
601
b.
100
c.
6
d.
10

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul scrie este definit alturat.
Ce se afieaz ca urmare a apelului
scrie(1,7); (6p.)
void scrie (int x,int y)
{cout<<x<<y; | printf(%d%d,x,y);
if(x<y)
{scrie(x+1,y-1);
cout<<(x+y)/2;|printf(%d,(x+y)/2);
}
}
3. Scriei definia complet a subprogramului nreal cu doi parametri x i y, numere naturale
din intervalul [1;1000]i returneaz un numr real cu proprietatea c partea sa ntreag
este egal cu x iar cifrele numrului y, sunt egale, n ordine, cu cifrele aflate dup punctul
zecimal.
Exemplu: pentru x=12 i y=543, subprogramul returneaz valoarea 12.543. (10p.)
4. Fiierul NUMERE.IN conine pe prima linie un numr natural nenul n (2n100) i pe
urmtoarea linie n numere reale pozitive n ordine strict cresctoare separate prin cte un
spaiu.
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
memoriei utilizate, determin i afieaz pe ecran cel mai mare numr natural x cu
proprietatea c n orice interval deschis avnd capete oricare dou dintre cele n numere aflate
pe linia a doua n fiierul NUMERE.IN se gsesc cel puin x numere ntregi. Numrul astfel
determinat se afieaz pe ecran.
Exemplu: dac fiierul NUMERE.IN are coninutul:
6
3.5 5.1 9.2 16 20.33 100 atunci se afieaz 2 pentru c n oricare dintre intervalele
(3.5;5.1),(3.5;9.2),(3.5;16),(3.5;20.33),(3.5;100),(5.1;9.2),(5.1;16),(5.1;20.33)
(5.1;100),(9.2;16),(9.2;20.33),(9.2;100),(16;20.33),(16;100),(20.33;100) exist cel
puin dou numere ntregi. (6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Generarea tuturor combinaiilor de trei litere mici ale alfabetului englez, se poate realiza cu
ajutorul unui algoritm echivalent cu cel de generare a: (4p.)
a. produsului cartezian b. combinrilor
c. aranjamentelor d. permutrilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul f este definit alturat.
Ce valoarea are f(8,4)? (4p.)
int f (int x,int y)
{ if(x<y)return 1+f(x+1,y);
if(y<x)return 1+f(y+1,x);
return 1; }
3. Scriei un program C/C++ care citete de la tastaur un numr natural n din intervalul
[2,10000]i apoi n numere reale i afieaz pe ecran cte dintre cele n numere reale sunt
egale cu media aritmetic a celorlalte n-1 numere reale. (6p.)
4. a) Scriei definiia complet a unui subprogram primul, care
- primete prin singurul su parametru, a, o valoare natural din intervalul [2,10000]
- returneaz o valoare natural reprezentnd cel mai mic divizor al numrului a mai mare strict
dect 1. (6p.)

b) Fiierul NUMERE.IN conine pe prima linie un numr natural nenul n(1n100) i pe
urmtoarea linie n numere naturale din intervalul [2,10000] separate prin cte un spaiu.
Un numr natural n se numete aproape prim dac este egal cu produsul a dou numere
prime distincte. De exemplu, numrul 14 este aproape prim pentru c este egal cu produsul
numerelor prime 2 i 7.
Scriei un program C/C++ care determin, folosind apeluri utile ale suprogramului primul,
cel mai mare numr aproape prim de pe linia a doua a fiierului NUMERE.IN. n caz
afirmativ se afieaz pe ecran mesajul DA urmat de numrul determinat iar n caz contrar
mesajul NU.
Exemplu: dac fiierul NUMERE.IN are coninutul:
6
100 14 21 8 77 35
atunci se afieaz pe ecran DA 77 pentru c numrul 77 este cel cel mai mare dintre numerele
aproape prime din fiier (14=7*2,21=7*3,77=7*11, 35=7*5). (10p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. n cte dintre permutrile elementelor mulimii {I,N,F,O} vocalele apar pe
poziii consecutive? (4p.)
a.
24
b.
6
c.
12
d.
4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Ce se afieaz ca urmare a
apelului p(123); dac
subprogramul p are definiia
alturat. (6p.)
void p (int x)
{cout<<x; | printf(%d,x);
if(x!=0){p(x/10);
cout<<x%10; | printf(%d,x%10);}}
3. Scriei definiia complet a subprogramului multipli, cu trei parametri a,b,c (ab),
numere naturale din intervalul [1,10000] i returneaz numrul numrul multiplilor lui c
din intervalul [a;b].
Exemplu: pentru a=10, b=27,c=5 subprogramul returneaz valoarea 4. (10p.)
4. Se consider dou tablouri unidimensionale A i B cu elemente numere naturale din
intervalul [1;10000]. Spunem c tabloul A se poate reduce la tabloul B dac exist o
mprire pe secvene de elemente aflate pe poziii consecutive n tabloul A astfel nct prin
nlocuirea secvenelor cu suma elementelor acestora s se obin, n ordine, elementele
tabloului B.

De exemplu tabloul


se poate reduce la tabloul


Fiierul NUMERE.IN conine pe prima linie dou numere naturale nenule n i
m(1n100), pe linia a doua n numere naturale din intervalul [1;10000] i pe linia a
treia alte m numere naturale din intervalul [1;10000].Pe fiecare linie numerele sunt
separate prin cte un spaiu.
a) Scriei un program C/C++ care citete cele dou numere naturale n i m din fiierul
NUMERE.IN, construiete n memorie dou tablouri unidimensionale A i B cu elementele
aflate n fiier pe a doua, respectiv a treia linie i verifica, utiliznd un algoritm eficient din
punct de vedere al timpului de executare, dac tabloul A se poate reduce la tabloul B.
Programul afieaz pe ecran mesajul DA n caz afirmativ i mesajul NU n caz negativ. (6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Pentru generarea numerelor cu n cifre formate cu elementele mulimii {0,4,8} se
utilizeaz un algoritm backtracking care, pentru n=2, genereaz, n ordine, numerele
40,44,48,80,84,88.
Dac n=4 i se utilizeaz acelai algoritm, care este numrul generat imediat dup numrul
4008 ? (4p.)
a.
4040
b.
4004
c.
4080
d.
8004

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul f este definit alturat.
Ce se afieaz ca urmare a apelului
f(1,4); (6p.)
void f (int x,int y)
{ for (int i=x;i<=y;i++)
{cout<<i;f(i+1,y);}
}
3. Scriei definiia complet a subprogramului suma, care primete prin cei 4 parametri
v,n,i,j:
- v,un tablou unidimensional cu maximum 100 de elemente ntregi din intervalul [-1000;1000]
- n , un numr natural reprezentnd numrul de elemente din tabloul v
- i i j dou valori naturale cu 1ijn
i returneaz suma elementelor v
i
,v
i+1
,,v
j
din tabloul v. (10p.)
4. Fiierul NUMERE.IN conine pe prima linie un numr natural nenul n(1n100) i pe
urmtoarea linie n numere reale pozitive ordonate cresctor, separate prin cte un spaiu.
a) Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n, i
determin, utiliznd un algoritm eficient din punct de vedere al timpului de executare i al
memoriei utilizate, numrul minim de intervale nchise de forma [x;x+1], cu x numr
natural, a cror reuniune include toate numerele reale din fiier.

Exemplu: Dac fiierul NUMERE.IN are coninutul:
6
2.3 2.8 5.1 5.7 5.9 6.3 atunci se afieaz 3 (intervalele [2;3],[5;6],[6;7]
sunt cele 3 intervale de forma cerut care conin numere din ir). (6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Avnd la dispoziie cifrele 0, 1 i 2 putem genera, n ordine cresctoare, numere care au
suma cifrelor egal cu 2 astfel nct primele 6 numere generate sunt, n aceast ordine: 2,
11, 20, 101, 110, 200. Folosind acelai algoritm se genereaz numere cu cifrele 0, 1, 2 i
3 care au suma cifrelor egal cu 4. Care va fi al 7-lea numr din aceast generare ? (4p.)
a.
103
b.
301
c.
220
d.
130

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul recursiv f1
definit alturat. Ce se va afia n urma
apelului f1(5)?
(6p.)

void f1(int x)
{ if (x<=9)
{ cout<<x+1; | printf("%d",x+1)
f1(x+2);
cout<<x+3; | printf("%d",x+3)
}
}
3. Scriei definiia complet subprogramului suma care primete ca parametru un tablou
unidimensional x cu cel mult 100 de elemente numere reale, un numr natural n ce
reprezint dimensiunea tabloului x (n100), i un numr natural m (nm). Subprogramul
returneaz suma obinut din cele mai mici m elemente ale tabloului x. (10p.)
4. n fiierul numere.txt, se afl memorate, pe prima linie un numr natural n (1n100), iar
pe fiecare dintre urmtoarele n linii cte dou numere ntregi x,y (-100xy100)
reprezentnd capetele cte unui segment [x,y] desenat pe axa Ox de coordonate.
a) Scriei n limbajul C/C++ un program eficient din punct de vedere al timpului de executare
i al spaiului de memorare, care citete din fiier datele existente, determin segmentul
rezultat n urma interseciei tuturor celor n segmente date i afieaz pe ecran dou numere
desprie printr-un spaiu ce reprezint capetele segmentului cerut. Dac segmentele nu au
nici un punct comun se va afia pe ecran valoarea 0. (6p.)
b) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia. (4p.)
Exemplu: dac fiierul numere.txt are coninutul alturat, se va afia
pe ecran
3 5
5
-7 10
3 20
-5 5
0 12
-8 30

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
n vederea participrii la un concurs, elevii de la liceul sportiv au dat o prob de selecie, n
urma creia primii 6 au obinut punctaje egale. n cte moduri poate fi format echipa
selecionat tiind c poate avea doar 4 membri, alei dintre cei 6, i c ordinea acestora n
cadrul echipei nu conteaz? (4p.)
a.
24
b.
30
c.
15
d.
4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul afis este definit alturat.
Ce se va afia n urma apelului
afis(17)?
(6p.)
void afis(int x)
{ if (x>3)
{ cout<<x-1; | printf("%d",x-1);
afis(x/3);
cout<<x+1; | printf("%d",x+1);
}
}
3.
Scriei definiia complet a subprogramului nr_prim care are ca parametru un numr
natural x i returneaz cel mai mic numr prim, strict mai mare dect x.
Exemplu: pentru x=25 subprogramul returneaz numrul 29, iar pentru x=17 valoarea
returnat va fi 19. (10p.)
4. n fiierul numere.txt sunt memorate pe mai multe linii, numere ntregi (cel mult 100),
numerele de pe aceeai linie fiind desprite prin cte un spaiu, fiecare numr avnd cel
mult 9 cifre. S se determine cele mai mici dou valori avnd exact dou cifre fiecare,
memorate n fiier i s se afieze pe ecran aceste valori, desprite prin cte un spaiu.
a) Descriei n limbaj natural o metod eficient de rezolvare din punct de vedere al
gestionrii memoriei i timpului de executare. (4p.)
b) Scriei programul C/C++ corespunztor metodei descrise la punctul a. (6p.)

Exemplu: dac fiierul numere.txt are coninutul alturat, se
va afia pe ecran
-77 i 10
5 10
3 -77 20
50 5 0 12 18 30

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind un algoritm de generare putem obine numere naturale de k cifre care au suma
cifrelor egal cu un numr natural s. Astfel, pentru valorile k=2 i s=6 se genereaz, n
ordine, numerele: 15, 24, 33, 42, 51, 60. Care va fi al treilea numr generat pentru k=4 i
s=5? (4p.)
a.
1301
b.
1022
c.
2201
d.
1031

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul re este definit alturat. Ce valoarea
are re(1)? Dar re(14)?
(6p.)
int re(int i)
{
if (i<9) return 3+re(i+2);
else
if (i==9) return -2;
else return 1+re(i-1);
}
3. a) Subprogramul max_cif primete prin parametrul x un tablou unidimensional, cu cel mult
100 de elemente, numere ntregi cu cel mult 4 cifre fiecare, iar prin parametrul n un numr
natural ce reprezint dimensiunea tabloului x (n100). Scriei definiia complet a
subprogramului max_cif care returneaz cel mai mare numr de trei cifre al tabloului x.
Dac tabloul nu conine nicio valoare de trei cifre, subprogramul va returna 0. (6p.)
b) n fiierul numere.txt se afl memorat pe prima linie un numr natural n (n100), iar
pe urmtoarele n linii, cte n numere ntregi desprite prin cte un spaiu. Scriei n limbajul
C/C++, un algoritm eficient din punct de vedere al gestionrii memoriei care citete din fiier
datele existente i, folosind apeluri utile ale subprogramului max_cif, determin i afieaz
cel mai mare numr de trei cifre memorat n fiier. Dac n fiier nu exist niciun numr de
trei cifre se va afia 0. (10p.)
c) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia. (4p.)
Exemplu: dac fiierul numere.txt are
coninutul alturat, se va afia valoarea: 345.


5
112 333 1 18 345
-1 95 7 97 -12
45 -806 0 7 89
1 5 17 197 -102
45 -86 0 7 9

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Completarea unui bilet de LOTO presupune colorarea a 6 numere din cele 49 nscrise pe
bilet. O situaie statistic pe o anumit perioad de timp arat c cele mai frecvente numere
care au fost extrase la LOTO sunt: 2, 20, 18, 38, 36, 42, 46, 48. Cte bilete de 6
numere se pot completa folosind doar aceste valori tiind c numrul 42 va fi colorat pe
fiecare bilet. (4p.)
a.
21
b.
6!
c.
42
d.
56

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider definit subprogramul f .
Scriei dou valori naturale, x1 i x2, (x1<12 i x2<12)
pentru care f(x1)=f(x2). (6p.)
int f(int i)
{
if (i>12) return 1;
else return 1+f(i+2);
}
3. a) Subprogramul max primete ca parametru un tablou unidimensional x cu cel mult 100 de
elemente numere ntregi, care sunt, n ordine, termenii unei progresii aritmetice i un numr
natural n, care reprezint dimensiunea tabloului. Scriei definiia complet a subprogramului
max care returneaz cel mai mare termen al progresiei aritmetice. Alegei un algoritm de
rezolvare eficient din punct de vedere al timpului de executare i al spaiului de memorie
utilizat. (6p.)
b) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia. (4p.)
c) n fiierul numere.txt, se afl memorat pe prima linie un numr natural n (n<100), iar
pe fiecare dintre urmtoarele n linii, cte n numere ntregi cu cel mult 4 cifre fiecare. Scriei
programul C/C++ care citete din fiier datele existente, determin liniile din fiier pe care s-
au memorat n ordine termenii unei progresii aritmetice i afieaz pe ecran, folosind apeluri
ale subprogramului max cel mai mare numr (diferit de cel situat pe prima linie) din fiier,
care n plus este termenul unei progresii aritmetice. (10p.)
Exemplu: dac fiierul numere.txt are coninutul
alturat, se va afia 50, deoarece progresiile aritmetice
sunt:
(-9 -7 -5 -3 -1),
(50 40 30 20 10) i
(18 17 16 15 14)
5
5 7 3 1 9
-9 -7 -5 -3 -1
2 5 8 14 11
50 40 30 20 10
18 17 16 15 14

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Pentru generarea tuturor mulimilor de cte 5 cifre, avnd la dispoziie cifrele de la 1 la 9,
se poate utilza un algoritm echivalent cu algoritmul de generare a: (4p.)
a. permutrilor de 5 elemente b. submulimilor mulimii
{1,2,3,4,5,6,7,8,9}
c. combinrilor de 9 elemente luate cte 5 d. aranjamentelor de 9 elemente luate cte
5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul f este definit alturat. Ce se
va afia n urma executrii secvenei de mai
jos?
a=3,b=9; f(a,b);f(b,b);
(6p.)
void f(int &a,int b)
{
a=a-5;b=a-2;
cout<<a<<b; | printf("%d%d",a,b);
}
3. Fiierul text numere.in conine pe prima linie un numr natural n (0<n<1000), iar pe a
doua linie n numere naturale cu cel mult 9 cifre fiecare, desprite prin cte un spaiu.
Scriei un program C/C++ care citete toate numerele din fiier i afieaz pe ecran,
separate prin cte un spaiu, numerele de pe a doua linie a fiierului, care ncep i se
termin cu aceeai cifr. (10p.)
Exemplu: dac fiierul numere.in are
coninutul alturat, se numerele ce se vor afia
sunt: 55 3 101 7 2782
9
55 107 3 101 92 7 208 2782 80

4. a) Scriei definiia complet a unui subprogram recursiv sum care primete prin parametrul x
un numr natural de cel mult 4 cifre i returneaz suma divizorilor numrului x, diferii de 1
i de el nsui.
Exemplu: dac x=10 se va returna valoarea 7 (7=2+5). (4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (0<n<100), apoi
n numere naturale (cu cel mult 4 cifre fiecare). Programul determin, folosind apeluri utile
ale subprogramului sum, pentru fiecare numr natural, suma divizorilor si proprii i afieaz
pe ecran sumele determinate, n ordinea cresctoare a valorilor lor, separate prin cte un
spaiu. (6p.)
Exemplu: dac n=5 i numerele citite sunt 10 2 33 6 11
valorile afiate pe ecran vor fi: 0 0 5 7 14
deoarece suma divizorilor lui 10 este 7, suma divizorilor lui 2 este 0, suma divizorilor
lui 33 este 14, suma divizorilor lui 6 este 5, suma divizorilor lui 11 este 0.

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Subprogramul scif returneaz suma cifrelor unui numr natural transmis ca parametru.
Care este valoarea expresiei scif(scif(518)+scif(518))? (4p.)
a.
14
b.
10
c.
28
d.
1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 9 ca
sum a cel puin dou numere naturale nenule distincte. Termenii descompunerii sunt n
ordine strict cresctoare. Soluiile se genereaz n ordinea: 1+2+6, 1+3+5, 1+8,
2+3+4, 2+7, 3+6 i 4+5. Se aplic exact aceeai metod pentru scrierea lui 12. Scriei
n ordine toate soluiile de forma 2+...? (6p.)
3. Subprogramul cifra primete prin intermediul parametrului a un numr natural cu cel mult
4 cifre i returneaz ultima cifr par a sa. Dac numrul nu conine cifre pare subprogramul
ntoarce valoarea -1. De exemplu la apelul cifra(8345) subprogramul va returna 4.
a) S se scrie definiia complet a subprogramului cifra. (10p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n 15000, iar pe a
doua linie a fiierului se afl un ir de n numere naturale, desprite prin cte un spaiu,
fiecare numr fiind format din cel mult 4 cifre.
Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran, folosind
apeluri utile la subprogramului cifra, cel mai mare numr care se poate forma cu ultimele
cifre pare ale fiecrui element, dac acestea exist. Alegei o metod de rezolvare eficient
ca timp de executare.
Exemplu: dac fiierul bac.in are coninutul
alturat pe ecran se va afia: 64220 (6p.)
7
369 113 2 0 33 1354 42
c) Descriei succint n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 - 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se utilizeaz un algoritm pentru a genera n ordine lexicografic invers toate permutrile
mulimii {1,2,3,4,5}. Primele patru permutri generate sunt: 54321, 54312, 54231,
54213. A cincea permutare este: (4p.)
a.
53421
b.
54321
c.
54132
d.
54123

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Considerm subprogramul f definit alturat.
Ce valoare are f(11,7)? (6p.)
int f(int x,int y)
{if(x<=y) return x-y;
return f(y-x,x-1)+3;}
3. Scriei un program C/C++ care citete numerele naturale nenule n i k (kn100) i un
tablou unidimensional cu n elemente numere ntregi, fiecare avnd cel mult 4 cifre.
Programul modific tabloul, permutnd circular cu k poziii spre stnga, elementele acestuia
i afieaz pe ecran, pe o singur linie, separate prin cte un spaiu elementele tabloului
obinut.
Exemplu: dac n=4, k=3 i vectorul v=(1,2,3,4), atunci se vor afia n ordine
elementele: 4 1 2 3. (10p.)
a) Scriei doar antetul subprogramului div care primete prin intermediul parametrului x un
numr natural nenul cu cel mult 4 cifre, i returneaz numrul de divizori primi ai lui x. (4p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua
linie a fiierului se afl un ir format din n numere naturale nenule, desprite prin cte un
spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete
numerele din fiier i care afieaz pe ecran, folosind apeluri utile ale subprogramului div,
prima i ultima valoare din irul celor n numere citite, care au un numr par de divizori primi.
4.
Exemplu: dac fiierul bac.in are coninutul alturat pe
ecran se va afia: 20 10 (6p.)
7
30 105 20 140 7 10 5

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 9 ca
sum a cel puin dou numere naturale nenule distincte. Termenii descompunerii sunt n
ordine strict cresctoare. Soluiile se genereaz n ordinea: 1+2+6, 1+3+5, 1+8,
2+3+4, 2+7, 3+6 i 4+5. Se aplic exact aceeai metod pentru scrierea lui 8. Cte
soluii vor fi generate? (4p.)
a.
3
b.
4
c.
6
d.
5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a
subprogramului sc, stabilii ce valoare
are sc(901324)? (6p.)
int sc(long x)
{if(x<10) return x;
return sc(x/10)+x%10;}
3. Scriei n limbajul C/C++ definiia complet a subprogramul Del care are doi parametri x un
numr ntreg de cel mult 9 cifre, i y un numr natural nenul de o cifr. Subprogramul
determin eliminarea tuturor cifrelor lui x mai mari strict dect y i furnizeaz numrul
obinut tot prin intermediul parametrului x. Dac toate cifrele lui x sunt mai mari strict dect
y atunci x va primi valoarea -1.
Exemplu: dac x=37659, dup apelul Del(x,6) x va avea valoarea 365 (10p.)
4. Se consider subprogramul inter cu doi parametrii: x i y (numere ntregi formate din cel
mult patru cifre fiecare); subprogramul interschimb valorile a dou variabile transmise prin
intermediul parametrilor x i y.
a) Scriei n limbajul C/C++ definiia complet a subprogramului inter. (4p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua
linie a fiierului se afl un ir de n numere naturale nenule, desprite prin cte un spaiu,
fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care afieaz pe
ecran, n ordine cresctoare, numerele aflate pe a doua linie a fiierului. Numerele vor fi
afiate pe o singur linie iar ntre dou numere se va lsa un spaiu. Se vor folosi apeluri
utile ale subprogramului inter. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 6 ca
sum a cel puin dou numere naturale nenule. Termenii descompunerii sunt n ordine
cresctoare. Soluiile se genereaz n ordinea: 1+1+1+1+1+1, 1+1+1+1+2, 1+1+1+3,
1+1+4, 1+5, 2+2+2, 2+4 i 3+3. Se aplic exact aceeai metod pentru scrierea
lui 9. Care este penultima soluie? (6p.)
a.
3+3+3
b.
3+6
c.
4+5
d.
2+7

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului f,
ce valoare are f(8)? (4p.)
int f(int x)
{if(x<=4) return x*x-3;
return f(x-3)+4;}
Pe prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua linie
a fiierului se afl un ir format din n numere naturale, desprite prin cte un spaiu, fiecare
numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete valorile din
fiier i care afieaz pe ecran mesajul DA dac toate elementele pare din ir sunt n ordine
cresctoare i mesajul NU n caz contrar.
3.
Exemplu: dac fiierul bac.in are coninutul
alturat pe ecran se va afia: DA (10p.)
7
10 113 12 33 42 1354 421
4. Se consider subprogramul pr care primete prin intermediul parametrului a un numr natural
nenul cu cel mult 9 cifre i returneaz 1 dac numrul este prim i 0 n caz contrar.
a) Scriei numai antetul subprogramului pr. (4p.)
b) Considerm un numr natural nenul n>99 cu cel mult 9 cifre. S se realizeze un program
C/C++ care citete numrul n i care, folosind apeluri utile ale subprogramul pr, afieaz
pe ecran, separate prin cte un spaiu, doar valorile prime din irul numerelor obinute din n,
prin eliminarea succesiv a ultimei cifre, apoi a ultimelor dou cifre, apoi a ultimelor trei cifre
etc., pn se obine un numr de dou cifre, ca n exemplu.
Exemplu: pentru n=193124 se obine irul de valori 19312,1931, 193, 19. din care se
vor afia pe ecran doar valorile 1931 193 19. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 6 ca
sum a cel puin dou numere naturale nenule. Termenii descompunerii sunt n ordine
cresctoare. Soluiile se genereaz n ordinea: 1+1+1+1+1+1, 1+1+1+1+2, 1+1+1+3,
1+1+4, 1+5, 2+2+2, 2+4 i 3+3. Se aplic exact aceeai metod pentru scrierea
lui 9. Cte soluii de forma 2+... vor fi generate? (6p.)
a.
2
b.
3
c.
4
d.
5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a
subprogramului f, stabilii ce valoare are
f(23461)? (4p.)
int f(int x)
{if(x<10){if(x%2!=0)return 0;
return x;
}
if((x%2!=0)
return f(x/10);
return f(x/10)+x%10; }
Pe prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua linie
a fiierului se afl un ir format din n numere naturale, desprite prin cte un spaiu, fiecare
numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care citete numerele din
fiier i care afieaz pe ecran mesajul DA dac elementele pare n ir sunt n ordine
cresctoare, iar cele impare sunt n ordine descresctoare i mesajul NU n caz contrar.
3.
Exemplu: dac fiierul bac.in are coninutul
alturat pe ecran se va afia: DA (10p.)
8
10 1133 12 331 42 1354 221 13
4. Considerm definite subprogramele:
- pr care primete prin intermediul parametrului x un numr natural cu cel mult 4 cifre i
returneaz 1 dac numrul este prim i 0 n caz contrar;
- div care primete prin intermediul parametrului y un numr natural cu cel mult 4 cifre i
returneaz suma tuturor divizorilor numrului y.
a) Scriei numai antetul subprogramelor pr i div. (4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (n<1000) i
care afieaz pe ecran toate numerele mai mici dect n cu proprietatea c suma divizorilor
lor este numr prim, folosind apeluri utile la subprogramele pr i div.
Exemplu: dac n=20 atunci programul va afia:2 4 9 16 (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz numerele naturale formate din exact 3 cifre i
care au suma cifrelor egal cu 4, n aceast ordine: 103, 112, 121, 130, 202,
211, 220, 301, 310, 400. Dac utilizm acelai algoritm pentru a genera toate
numerele de 4 cifre ce au suma cifrelor egala cu 7 precizai care este numarul generat
imediat dupa 1222. (4p.)
a.
1231
b.
1223
c.
1213
d.
1321

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul f are definiia alturat. Ce valoare
are f(7,2)? Dar f(35,2)? (6p.)
int f(int x, int y)
{if(x%y==0)return y;
else return f(x,y+1);
}
3. S se scrie o funcie cu 2 parametrii care primete prin intermediul parametrului a un vector
cu cel mult 100 de elemente numere naturale de cel mult 4 cifre fiecare i prin intermediul
parametrului n un numr natural nenul, n<100. Subprogramul returneaz valoarea 1 dac
toate elementele vectorului a sunt distincte i dac diferena absolut a oricror dou
elemente vecine din vector este diferit de 1..Altfel subprogramul va returna valoarea 0.
(10p.)
4.
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe
doua linie n numere naturale, formate dintr-o singur cifr, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, cea mai mare cifr dintre cele situate pe a doua linie a fiierului, precum i
numrul de apariii ale acesteia. Cele dou numere vor fi afiate pe o singur linie a
ecranului, separate printr-un spaiu.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
3 5 2 1 5 3 1
atunci pe ecran se va afia: 5 2. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)




v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz toate permutrile mulimii {1,2,3,4}. Dac
primele trei permutri generate sunt, n acest ordine: 1234, 1243, 1324 precizai care
este permutarea generat imediat dup 3412. (4p.)
a.
3421
b.
3413
c.
4123
d.
3214

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul f are definiia alturat. Ce valoare
are f(7)? Dar f(100)? (6p.)
int f(int x)
{if(x%6==0)return x;
else return f(x-1);
}
3. Scriei programul C/C++ care citete de la tastatura dou numere naturale n i k (3<n<100,
1kn), apoi un ir format din n numere ntregi de cel mult 4 cifre fiecare. Programul va
determina cea mai mare sum ce se poate forma cu oricare k numere din ir apoi va afia
pe ecran aceasta sum.
Exemplu: dac n=6 i k=4 iar irul este format din elementele (5, 2, 5, 4, 1, 3) atunci
pe ecran se va afia 17. (10p.)
4. Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe
doua linie, separate prin cte un spaiu, n numere naturale formate din cel mult 2 cifre
fiecare.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, numerele ce apar o singur dat n a doua linie a fiierului. Aceste numere
vor fi afiate pe ecran n ordine cresctoare, separate prin cte un spaiu.
Exemplu: dac fiierul numere.txt are urmtorul coninut:
7
3 5 2 1 5 23 1
atunci pe ecran se va afia: 2 3 23. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz numerele formate din cte 3 cifre distincte din
mulimea {1,3,5,7}. Dac primele trei numere generate sunt, n acest ordine: 135,
137,153 care este cel de-al patrulea numr generat? (4p.)
a.
157
b.
173
c.
315
d.
357

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul f are definiia alturat. Ce valoare
are f(3)? Dar f(10)? (6p.)
int f(int x)
{if(x==0)return 0;
else return f(x-1)+2;
}
3. Scriei programul C/C++ care citete de la tastatur numrul natural n (0<n<100) i un ir
format din n numere ntregi de cel mult 4 cifre fiecare, determin i afieaz pe ecran suma
tuturor numerelor impare din ir.
Exemplu: dac n=6 iar irul este format din elementele (3, 2, 7, 1, 4, 3) atunci pe
ecran se va afia 14. (10p.)
4. Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe a
doua linie n cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, cel mai mare numr ce se poate forma cu toate cifrele coninute de a doua
linie a fiierului numere.txt. Numrul determinat se va afia pe ecran.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
2 5 3 1 5 8 9
atunci pe ecran se va afia: 9855321. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz permutrile cuvntului info. Dac primele trei
soluii generate sunt: fino, fion, fnio care este cea de-a cincea soluie? (4p.)
a.
Foin
b.
Fnoi
c.
Foni
d.
Ifon

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul f are definiia alturat. Ce
valoare are f(5,10)? (6p.)
int f(int x,int y)
{if(x==y)return x;
else if(x<y)return f(x+1,y-1);
else return f(x-1,y);
}
3. Scriei programul C/C++ care citete de la tastatur numrul natural n (0<n<100) i un ir
format din n numere ntregi de cel mult 4 cifre fiecare, determin i afieaz pe ecran
numrul de ptrate perfecte din ir.
Exemplu: dac n=6 iar irul este format din elementele (31, 25, 19, 1, 4, 3) atunci
pe ecran se va afia 3. (10p.)
4.
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe a
doua linie n numere naturale, formate din cel mult 4 cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, cifrele ce apar n scrierea numerelor situate pe a doua linie a fiierului.
Programul va afia pe ecran aceste cifre in ordine cresctoare, separate prin cte un spaiu.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
243 32 545 74 12 1344 90
atunci pe ecran se va afia: 0 1 2 3 4 5 7 9 (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz toate cuvintele de cte 3 litere din mulimea
{a,b,c}. Dac primele patru cuvinte generate sunt, n acest ordine: aaa, aab, aac,
aba, care este cel de-al optulea cuvnt generat? (4p.)
a.
acb
b.
acc
c.
aca
d.
bca

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul f are definiia alturat. Ce valoare are
f(4)? Dar f(11)? (6p.)
int f(int x)
{if(x<1)return 1;
else return f(x-3)+1;
}
3. Scriei programul C/C++ care citete de la tastatur numrul natural n (0<n<100) i un ir
format din n numere reale. Aceste numere au att partea ntreag ct i partea fracionar
formate din cel mult trei cifre. Programul determin i afieaz pe ecran toate numerele din
ir care apar o singur dat n acesta.
Exemplu: Dac n=7 iar irul este format din elementele (3.4, -151, 0.291, 3.4,
4.09, 3.4, 0.291) atunci pe ecran se va afia -151 4.09. (10p.)
4. Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe a
doua linie n numere naturale, formate din cel mult 2 cifre, separate prin cte un spaiu.
a) Scriei un program C/C++, eficient att din punct de vedere al timpului de executare, care
afieaz pe ecran toate numerele situate pe a doua linie a fiierului, n ordinea cresctoare
a valorilor lor, separate prin cte un spaiu.
Exemplu: dac fiierul numere.txt are urmtorul coninut:
7
12 21 22 11 9 12 3
atunci pe ecran se va afia: 3 9 11 12 12 21 22 (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Un program genereaz, n ordine cresctoare, numerele naturale, de exact 5 cifre din
mulimea {1, 2, 3, 4, 5}. Fiecare dintre numerele generate are cifrele distincte dou cte
dou. Primele 3 numere astfel generate sunt: 12345, 12354, 12435. Care este numrul
generat imediat dup 12543? (4p.)
a.
15342
b.
12534
c.
13245
d.
13452

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Funcia f are definiia alturat. Dac f(x)
are valoarea 10100, care este valoarea lui x?
(6p.)

long f(int n)
{
if(n<=0) return 0;
else return f(n-1)+2*n;
}
Fiierul bac.txt conine pe prima linie un numr natural n (n100), iar pe a doua linie,
separate prin cte un spaiu, n numere naturale nenule, cu cel mult 4 cifre fiecare. Scriei
programul C/C++ care citete de la tastatur un numr natural k (k25), construiete i
afieaz pe ecran un tablou unidimensional ce conine numerele citite din fiierul bac.txt
care au cel puin k divizori.
3.
Exemplu: dac k =9 iar fiierul are coninutul
alturat, atunci tabloul care se afieaz este:
100 400 180 616 (10p.)
8
100 56 22 909 222 400 180 616
4. a) Scriei n limbajul C/C++ doar antetul subprogramului cifre, care prin intermediul
parametrului nr primete un numr natural de cel mult 9 cifre i furnizeaz prin intermediul
parametrilor nc i sc numrul de cifre i respectiv suma cifrelor din scrierea lui nr. (4p.)
b) Scriei n limbajul C/C++ definiia complet a unui subprogram cu un singur parametru,
x, prin intermediul cruia primete un numr natural cu cel mult 9 cifre i care returneaz
valoarea 1 dac n scrierea n baza 10 a lui x se gsete cel puin o cifr care s fie media
aritmetic a celorlalte cifre din componena lui x i 0 n caz contrar, folosind apeluri utile ale
subprogramului cifre, de la punctul a.
Exemplu: pentru n=27989 subprogramul va returna valoarea 1 deoarece n scrierea lui n
apare cifra 7 care este media aritmetic a celorlalte cifre din scrierea lui n:
7=(2+9+8+9)/4.
Pentru n=7351 se returneaz 0. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Valorile memorate de componentele
vectorului v, cu indicii de la 0 la 5, sunt, n
aceast ordine: 183, 212, 453, 18, 42, 83.
Care dintre urmtoarele apeluri ale
subprogramului tab cu definiia alturat,
NU returneaz un numr par?
(4p.)

int tab (int i,int v[], int c)
{ int n;
if(i<0) return 0;
else
{ n=v[i];
while(n!=0)
{ if(n%10==c%10)
return 1+tab(i-1,v,c%10);
n=n/10;
}
return tab(i-1,v,c%10);
}
}
a.
tab(4,v,218)
b.
tab(5,v,72)
c.
tab(4,v,123)
d.
tab(5,v,71)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. ntr-un penar sunt unsprezece creioane, dintre care trei sunt roii iar celelalte sunt negre.
Dac scoatem din penar cinci creioane, cte posibiliti exist ca dou dintre ele s fie roii?
(6p.)
Fiierul text bac.txt conine pe prima linie un numr natural n (n<100), iar pe a doua
linie, separate prin cte un spaiu, n numere naturale, mai mici dect 30000 fiecare.
Scriei un program C/C++ care citete de la tastatur un numr natural k (k<10) precum i
numerele din fiierul bac.txt i determin i afieaz pe ecran, cu cte un spaiu ntre ele,
toate numerele de pe a doua linie a fiierului care conin n scrierea lor cifra memorat n
variabila k. Dac nu exist un asemenea numr pe a doua linie a fiierului, se afieaz pe
ecran mesajul NU.
3.
Exemplu: dac se citete de la tastatur
k=2, iar fiierul are coninutul alturat, atunci
pe ecran se afieaz numerele:
234 202 427 92 (10p.)
8
234 5678 317 809 202 427 92 6004
4. a) Scriei n limbajul C/C++ doar antetul unui subprogram cif, care primete prin
intermediul primului parametru, nr, un numr natural cu cel mult 9 cifre i furnizeaz prin
intermediul celui de-al doilea parametru, s, suma cifrelor din scrierea lui nr. (4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (0<n<25), apoi
un ir de n numere naturale nenule cu cel mult 9 cifre fiecare i care determin i afieaz
pe ecran, separate prin cte un spaiu, numerele din ir care au suma cifrelor maxim,
folosind apeluri utile ale subprogramului cif.
Exemplu: dac pentru n=8 se citete irul de numere 274 56018 354 8219 293 287
932 634 atunci, pe ecran, se afieaz numerele 56018 8219 (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Valorile memorate de componentele
vectorului v, cu indicii de la 0 la 5, sunt, n
aceast ordine: 183, 212, 453, 18, 42,
83. Care este apelul corect al
subprogramului tablou alturat pentru
ca, n urma executrii apelului, valoarea
variabilei ntregi x s fie 2?
(4p.)
int tablou (int i,int v[], int c)
{int n;
if(i<0) return 0;
else
{ n=v[i];
while(n>9)
{ if(n%10==c)
return 1+tablou(i-1,v,c);
n=n/10;
}
return tablou(i-1,v,c);
}
}
a.
x=tablou(2,v,2);
b.
x=tablou(2,v,5);
c.
x=tablou(5,v,2);
d.
x=tablou(2,v,8);

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se genereaz prin metoda backtracking mulimile distincte ale cror elemente sunt numere
naturale nenule i care au proprietatea c suma elementelor fiecrei mulimi este egal cu
7. Astfel, sunt generate, n aceast ordine, mulimile: {1,2,4}, {1,6}, {2,5}, {3,4},
{7}. Folosind aceeai metod pentru a genera mulimile distincte ale cror elemente sunt
numere naturale nenule i care au proprietatea c suma elementelor fiecrei mulimi este
egal cu 9, stabilii n ce ordine sunt generate urmtoarele mulimi: M1={2,3,4};
M2={3,6}; M3={2,7}; M4={4,5}. (6p.)
3. Se consider subprogramul div care primete prin parametrii x i y dou valori ntregi
pozitive (0<x<100 i 0<y<100) i returneaz cel mai mare divizor comun al lor.
a) Scriei definiia complet a subprogramului div. (4p.)
b) Scriei un program C/C++ care citete de la tastatur trei numere naturale nenule
distincte a, b i n, cu cel mult 2 cifre fiecare i care construiete n memorie un tablou
unidimensional ale crui elemente memoreaz n ordine cresctoare, toate numerele
naturale cuprinse n intervalul nchis determinat de a i b, care nu au niciun divizor strict mai
mare dect 1 comun cu n, folosind apeluri utile ale subprogramului div. Intervalul nchis
determinat de a i b este [a,b] dac a<b sau [b,a] dac ba.
Exemplu:pentru a=60, b=32 i n=36 tabloul va conine: 35 37 41 43 47 49 53 55 59
(6p.)
4. Fiierul text bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua
linie, separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scriei un program C/C++ care determin i scrie n fiierul bac.out toate numerele
coninute de a doua linie a fiierului care apar o singur dat n aceast linie. Numerele
determinate se vor afia n ordinea cresctoare a valorilor lor, separate prin cte un spaiu.
Exemplu: dac pe prima linie a fiierului bac.in se afl 10, iar pe linia a doua se gsesc
numerele 2 4548 568 4548 57 89 5974 2 89 32 atunci valorile cutate sunt 32 57
568 5974. (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Valorile memorate de componentele
vectorului v, cu indicii de la 0 la 5, sunt, n
aceast ordine: 420, 48, 635, 628, 837,
93. Care este apelul corect al
subprogramului tablou alturat pentru
ca, n urma executrii apelului, valoarea
variabilei ntregi x s fie 3? (4p.)
int tablou (int i,int v[])
{
if(i<0) return 0;
else {
int n=v[i];
while(n) {
if(n%2)return 1+tablou(i-1,v);
n=n/10; }
return tablou(i-1,v); }
}
a.
x=tablou(3,v);
b.
x=tablou(4,v);
c.
x=tablou(5,v);
d.
x=tablou(0,v);

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se genereaz n ordine strict cresctoare numerele de cte ase cifre care conin: cifra 1 o
singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine, numerele:
122333, 123233, 123323, , 333221. Cte numere generate prin aceast metod au
prima cifr 1 i ultima cifr 2? (6p.)
3. Scriei un program C/C++ care citete de la tastatur trei numere naturale a, b i n, mai mici
dect 30000 fiecare, i care construiete n memorie un tablou unidimensional ale crui
elemente memoreaz toi multiplii lui n din intervalul nchis determinat de a i b. Programul
va afia pe ecran numerele din tablou n ordinea cresctoare a lor, separate printr-un singur
spaiu, iar dac nu exist astfel de valori, va afia pe ecran mesajul Nu. Intervalul nchis
determinat de a i b este [a,b] dac a<b sau [b,a] dac ba.
Exemplu: pentru a=65, b=31 i n=9 tabloul va conine valorile: 36 45 54 63 (6p.)
4. Se consider subprogramul cmax care prin parametrul a primete un numr natural nenul
mai mic dect 30000, iar prin parametrul b furnizeaz cifra maxim din numrul a.
a) Scriei, folosind limbajul C/C++, doar antetul subprogramului cmax. (4p.)
b) Fiierul bac.txt conine cel mult 1000 numere naturale nenule, mai mici dect 30000
fiecare, separate prin cte un spaiu. Scriei programul C/C++ care citete din fiierul
bac.txt toate numerele i care determin cea mai mare cifr din scrierea lor folosind
apeluri utile ale subprogramului cmax. Cifra determinat se va afia pe ecran.
Exemplu: dac fiierul bac.txt conine valorile: 23 12 64 12 72 345 67 23 71 634
atunci pe ecran se afieaz 7. (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Valorile memorate de componentele
vectorului v, cu indicii de la 0 la 5, sunt, n
aceast ordine: 973, 51, 871, 350, 691,
15. Care este apelul corect al
subprogramului tablou alturat pentru ca,
n urma executrii apelului, valoarea
variabilei ntregi x s fie 3?
(4p.)
int tablou (int i,int v[], int c)
{
if(i<0) return 0;
else {
int n=v[i];
while(n) {
if(n%10==c)
return 1+tablou(i-1,v,c);
n=n/10; }
return tablou(i-1,v,c); }
}
a.
x=tablou(4,v,5);
b.
x=tablou(5,v,5);
c.
x=tablou(5,v,1);
d.
x=tablou(0,v,4);

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se genereaz n ordine strict cresctoare toate numerele de cte ase cifre care conin:
cifra 1 o singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine,
numerele: 122333, 123233, 123323, , 333221. Ce numr se genereaz imediat dup
332312? (6p.)
3. Se consider subprogramul div care primete prin parametrii x i y dou valori ntregi
pozitive (0<x<1000 i 0<y<1000) i returneaz valoarea 1 dac y este divizor al lui x i 0
n caz contrar.
a) Scriei definiia complet a subprogramului div (4p.)
b) Scriei un program C/C++ care citete de la tastatur trei numere naturale nenule a, b i
n, cu cel mult 3 cifre fiecare i care construiete n memorie un tablou unidimensional ale
crui elemente memoreaz n ordine cresctoare, toi divizorii lui n din intervalul nchis
determinat de a i b folosind apeluri utile ale subprogramului div. Intervalul nchis
determinat de a i b este [a,b] dac a<b sau [b,a] dac ba.
Exemplu: pentru a=65, b=11 i n=140 tabloul va conine: 14 20 28 35 (6p.)
4. Fiierul bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua linie,
separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scriei un program C/C++ care determin i scrie n fiierul bac.out, toate numerele, citite de
pe a doua linie a fiierului bac.in, care apar de cel puin dou ori. Numerele determinate se
vor scrie n ordine cresctoare, pe aceeai linie, separate prin cte un spaiu.
Exemplu: dac fiierul bac.in conine pe prima linie numrul 11, iar pe linia a doua
valorile 23 12 54 12 78 345 67 23 78 934 23
atunci fiierul bac.out va conine: 12 23 78 (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Care este antetul corect al subprogramului cifre care primete prin intermediul primului
parametru x un numr natural i furnizeaz prin intermediul celui de-al doilea parametru,
y, suma cifrelor numrului natural x? (4p.)
a.
void cifre(int x, int &y)
b.
int cifre(int x)
c.
void cifre(int x, int y)
d.
int cifre(int &x, int y)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider un numr natural nenul x avnd exact 8 cifre, cifrele lui fiind distincte 2 cte 2,
iar printre cifrele sale se gsete i cifra 0. Permutnd cifrele lui x se obin alte numere
naturale. Cte dintre numerele obinute, inclusiv x, au exact 8 cifre? (6p.)
3. Se consider subprogramul dist2, care primete prin intermediul parametrilor xa, ya, xb i
respectiv yb, coordonatele carteziene ntregi pentru dou puncte din plan. Subprogramul
returneaz ptratul distanei dintre cele dou puncte.
a) Scriei n limbajul C/C++ definiia complet a subprogramului dist2. (4p.)
b) Scriei un program C/C++ care citete de la tastatur 8 valori ntregi reprezentnd
coordonatele carteziene pentru patru puncte din plan i afieaz mesajul Da dac cele
patru puncte pot fi vrfurile unui ptrat, iar n caz contrar afieaz mesajul Nu,folosind
apeluri utile ale subprogramului dist2.
Exemplu: dac coordonatele punctelor sunt cele alturate
atunci se va afia mesajul Da (6p.)
0 0
3 0
3 3
0 3
Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie n numere naturale nenule, separate prin cte un spaiu, fiecare numr avnd
maximum 4 cifre. Scriei un program C/C++ care citete toate numerele din fiierul text
date.in, construiete n memorie un tablou unidimensional a, cu cele n elemente din fiier
i afieaz pe ecran perechile (a[i], a[j]) , 1i<jn, cu proprietatea c elementele
fiecreia dintre aceste perechi au aceeai paritate. Fiecare pereche se va afia pe cte o
linie a ecranului, elementele perechii fiind separate prin cte un spaiu. n cazul n care nu
exist nicio pereche se va afia valoarea 0...
4.
Exemplu: dac fiierul date.in are coninutul alturat,
se vor afia:
16 22
16 6
22 6
3 1 (10p.)
5
16 22 3 6 1

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz n ordine lexicografic toate anagramele
cuvntului caiet ( cuvinte formate din aceleai litere, eventual n alt ordine). Cte cuvinte
vor fi generate? (4p.)
a.
60
b.
100
c.
200
d.
120

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit alturat.
Ce valoare are f(4)? Dar f(100)? (6p.)
long f(unsigned int n)
{ if (n==0) return 0;
else return n+f(n-1);
}
3. Subprogramul dist, cu doi parametri, primete prin intermediul primului parametru a un
numr natural cu maximum 8 cifre i returneaz prin intermediul celui de-al doilea
parametru b numrul cifrelor distincte ale lui a.
Exemplu: dist(1223712) returneaz valoarea 4 ( deorece cifrele distincte ale parametrului
de apel sunt 1, 2, 3, 7)
a) Scriei definiia complet a subprogramului dist. (4p.)
b) Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie n numere naturale, separate prin cte un spaiu, fiecare numr avnd maximum 8
cifre. Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran,
desprite prin cte un spaiu, numerele de pe a doua linie a fiierului text date.in, ce au
numr maxim de cifre distincte, folosind apeluri utile ale subprogramului dist.
Exemplu: dac fiierul date.in are coninutul
alturat, atunci se vor afia numerele:
1775 242477 123 (6p.)
6
16 1775 333 242477 123 55566
4.
Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n100) i
apoi n numere naturale nenule, de maximum 4 cifre fiecare, reprezentnd elementele unui
tablou unidimensional; programul afieaz mesajul Da n cazul n care elementele tabloului
reprezint o permutare a elementelor mulimii {1,2,3,...,n}, iar n caz contrar afieaz
mesajul Nu. (10p.)



v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Subprogramul f realizeaz interschimbarea valorilor a 2 variabile ntregi. Care este antetul
corect al subprogramului f ? (4p.)
a.
void f(int &x, int &y)
b.
int f(int x,int y)
c.
void f(int x, int &y)
d.
void f(int &x, int y)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Cte valori ale lui n aparinnd
intervalului [10, 20] au proprietatea c
la apelul f(n) se obine valoarea 0?
( 6p.)
int f(unsigned int n)
{if (n==0) return 0;
else if(n%2==0)return n%10+f(n/10);
else return f(n/10);
}
Se consider subprogramul cmmdc, care primete prin intermediul a doi parametri, a i b,
dou numere naturale nenule, cu maximum 8 cifre fiecare, i returneaz cel mai mare
divizor comun al valorilor parametrilor a i b.
a) Scriei numai antetul subprogramului cmmdc. (4p.)
b) Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie un ir format din n numere naturale nenule, separate prin cte un spaiu, fiecare
numr avnd maximum 8 cifre. Scriei un program C/C++ care citete toate numerele din
fiierul text date.in i afieaz pe ecran lungimea maxim a unei secvene din ir cu
proprietatea c orice dou elemente aflate pe poziii consecutive sunt prime ntre ele. O
secven a unui ir este format din unul sau mai multe elemente aflate pe poziii
consecutive.
3.
Exemplu: dac fiierul date.in are coninutul alturat, se va
afia 3 pentru c cea mai lung secvena cu proprietatea
cerut este 6 25 6. (6p.)
7
16 25 6 12 10 4 5
4. Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n<=100),
apoi n numere naturale reprezentnd elementele unui tablou unidimensional, i afieaz pe
ecran toate permutrile circulare, cu o poziie ctre stnga, ale elementelor tabloului.
Elementele fiecrei permutari se vor afia pe cte o linie, separate prin cte un spaiu.
Exemplu: dac n=4 i tabloul unidimensional are coninutul
alturat, atunci se vor afia:
10 20 30 49
20 30 49 10
30 49 10 20
49 10 20 30 (10p.)
10 20 30 49

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking se genereaz n ordine lexicografic toate anagramele
cuvntului caiet ( cuvinte formate din aceleai litere, eventul n alt ordine). Care este a
asea soluie? (4p.)
a.
catei
b.
actie
c.
actei
d.
catie

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f
definit alaturat. Ce se afieaz la
apelul f(1)?
(6p.)
void f(int i)
{if(i<=5){
cout<<i<< ;| printf(%d ,i);
f(i+1);
cout<<i/2<< ;| printf(%d ,i/2);
}
Se consider subprogramul pal care primete care primete prin intermediul primului
parametru a un numr natural, cu minimum 2 cifre i maximum 8 cifre, i returneaz prin
intermediul celui de-al doilea parametru b cel mai apropiat numr palindrom de a. n cazul
n care exist 2 astfel de numere, subprogramul va returna numrul mai mic. Un numr
natural x este palindrom dac este egal cu numrul obinut prin scrierea cifrelor lui x n
ordine invers.
Exemplu: pal(16) va returna valoarea 11; pal(126) va returna 121; pal(33) va returna
33
a) Scriei definitia complet a subprogramului pal. (4p.)
b) Fiierul text date.in conine pe prima linie un numr natural nenul n (n100)iar pe a
doua linie n numere naturale nenule, separate prin cte un spaiu, fiecare numr avnd
minimum 2 cifre i maximum 8 cifre. Scriei un program C/C++ care citete toate numerele
din fiierul text date.in i afieaz pe ecran desprite printr-un spaiu, pentru fiecare
dintre cele n numere cel mai apropiat numr palindrom, folosind apeluri utile ale
subprogramului pal.
3.
Exemplu: dac fiierul date.in are coninutul alturat, atunci
se vor afia numerele: 11 1771 333 191 (6p.)
4
16 1775 333 190
Se citesc de la tastatur un numr natural nenul n (n<=100) i apoi cele n numere
naturale nenule, de maximum 4 cifre, reprezentnd elementele unui tablou unidimensional
v.
a) Scriei un program C/C++ care afieaz cte dintre elementele tabloului pot fi scrise ca
sum a altor dou elemente ale tabloului. n cazul n care nu exist niciun astfel de element
se va afia valoarea 0.
Exemplu: dac n=6 i tabloul v are
coninutul alturat atunci se va afia valoarea
2 (deoarece 25=10+15, 3=1+2) (8p.)
1,10,25,2,15,3,2
4.
b) Descriei pe scurt algoritmul de rezolvare. (2p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Utiliznd metoda backtracking se genereaz toate matricele ptratice de ordinul 4 ale cror
elemente aparin mulimii {0,1} cu proprietatea c pe fiecare linie i pe fiecare coloan
exist o singur valoare 1. Primele 3 soluii generate sunt, n aceast ordine:
1.
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
1 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
Care este penultima soluie? (4p.)
a.
0 0 0 1
0 0 1 0
1 0 0 0
0 1 0 0
b.
0 1 0 0
1 0 0 0
0 0 1 0
0 0 0 1
c.
0 0 0 1
0 1 0 0
0 0 1 0
1 0 0 0
d.
0 0 1 0
1 0 0 0
0 1 0 0
0 0 0 1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Cte valori ale parametrului n
aprinnd intervalului [1,100] au
proprietatea c la apelul f(n) se
obine o valoare nenul ?
(6p.)
int f(unsigned int n)
{ if (n>20) return 0;
else return 5+f(n+5);
}
3. Se consider subprogramul cifre care primete prin intermediul primului parametru a un
numr natural cu maximum 8 cifre nenule i returneaz, prin intermediul celui de-al doilea
parametrul b, cel mai mic numr care se poate forma cu toate cifrele distincte ale lui a.
a) Scriei definiia complet a subprogramului cifre. (4p.)
b) Se consider fiierul text date.in ce conine pe prima linie un numr natural nenul n
(n100) iar pe a doua linie n numere naturale, separate prin spaiu, fiecare numr avnd
maximum 8 cifre nenule. Scriei un program C/C++ care citete toate numerele din fiierul
text date.in i afieaz pe ecran, desprite printr-un spaiu, numerele situate pe a doua
linie a fiierului, formate numai din cifre distincte ordonate strict cresctor, folosind apeluri
utile ale subprogramului cifre. n cazul n care nu exist niciun astfel de numr se va afia
valoarea 0.

Exemplu: dac fiierul date.in are coninutul alturat,
atunci se vor afia numerele: 16 269 (6p.)
6
16 175 333 242477 321 269
Scriei un program C/C++ care citete de la tastatur un numr natural nenul n(n100) i
2*n numere naturale de maximum 3 cifre reprezentnd elementele a 2 tablouri
unidimensionale a i b, apoi construieste n memorie i afieaz pe ecran cele n elemente
ale unui tablou unidimensional c. Elementul c[i] (1in) se obine conform definiiei
urmtoare:
c[i] = a[i] concatenat cu b[i] , dac a[i]<b[i]
b[i] concatenat cu a[i], altfel
4.
Exemplu: dac n=3 i tablourile a i b au coninutul
alturat, atunci coninutul tabloului c este urmtorul:
112 123234 15345 (10p.)
a : (12, 123, 345)
b: ( 1, 234, 15)




v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic



v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Pentru a genera toate numerele naturale cu exact 4 cifre i care au cifrele n ordine strict
descresctoare, se poate utiliza un algoritm echivalent cu cel pentru generarea: (4p.)
a. aranjamentelor de 4 obiecte luate cte 10 b. combinrilor de 10 obiecte luate cte 4
c. permutrilor a 10 obiecte d. permutrilor a 4 obiecte

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f,
definit alturat. Ce valoare are
f(21114,1)?
(6p.)
int f(int n,int c)
{
if(n==0)return 0;
if(n%10==c) return n%100+f(n/10,c);
return f(n/10,c);
}
3. Fisierul text numere.txt conine, pe o singur linie, cel mult 1000 de numere naturale
nenule cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un
program C/C++ care citete toate numerele din fiier i scrie pe ecran toate numerele pare
citite, ordonate cresctor. Dac fiierul numere.txt nu conine niciun numr par, atunci se
va afia pe ecran mesajul nu exista.
Exemplu: dac fiierul numere.txt conine numerele 2 3 1 4 7 2 5 8 6, atunci pe
ecran se va afia: 2 2 4 6 8 (10p.)
4. Se consider subprogramul numar, care:
primete prin intermediul parametrului, x, un numr natural nenul de cel mult 4 cifre;
furnizeaz prin intermediul parametrului nrp numrul de numere prime mai mici sau egale
cu x;
a) Scriei numai antetul subprogramului numar. (4p.)
b) Scriei declarrile de date i programul principal C/C++ n care se citesc de la tastatur
dou numere naturale nenule de cel mult 4 cifre, a i b i prin apeluri utile al subprogramului
numar, se verific dac intervalul determinat de a i b conine cel puin un numr prim.
Programul va afia pe ecran n caz afirmativ mesajul DA, iar n caz contrar mesajul NU. Prin
intervalul determinat de a i b se nelege intervalul [a,b] dac a<b i [b,a] n caz
contrar. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se utilizeaz metoda backtracking pentru a genera toate cuvintele de cte patru litere distincte
din mulimea {d,a,n,s}. tiind c al doilea cuvnt generat este dans, iar al treilea este
dsan, care va fi ultimul cuvnt obinut? (4p.)
a.
nsad
b.
snad
c.
snda
d.
dans

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f,
definit alturat. Ce se va afia la
apelul f(38)?
(6p.)
void f(int x){
if(x){
if(x%3==0){
cout<<3; | printf("3");
f(x/3);
}
else{
f(x/3);
cout<<x%3; | printf("%d",x%3);
}
}
}
3. Fisierul text INTRARE.TXT conine, pe o singur linie, cel mult 100 de numere naturale
nenule de cel mult patru cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un
program C/C++ care citete numerele din fiier i scrie n fiierul text IESIRE.TXT toate
valorile obinute prin nsumarea a cte dou numere din fiierul INTRARE.TXT, ordonate
cresctor. Dac o valoare se obine ca sum a mai multor perechi de numere din fiierul
INTRARE.TXT, ea va fi afiat o singur dat.
Exemplu:
INTRARE.TXT IESIRE.TXT
1 4 3 2 3 4 5 6 7 (10p.)
4. Se consider subprogramul multiplu, cu doi parametri,care:
primete prin intermediul parametrilor a i k dou numere ntregi de cel mult 4 cifre;
returneaz cel mai mic multiplu al lui k mai mare sau egal cu a;
a) Scriei numai antetul subprogramului multiplu. (4p.)
b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur trei
numere naturale nenule x,y,z, de cel mult 4 cifre fiecare, i care, prin apeluri utile ale
subprogramului multiplu, verific dac intervalul [x,y] conine cel puin un multiplu al
lui z. Programul va afia pe ecran, n caz afirmativ, mesajul DA, iar n caz contrar mesajul
NU. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se utilizeaz metoda backtracking pentru a genera toate cuvintele de cte trei litere distincte
din mulimea {i,n,f,o}. tiind c ultimele trei cuvinte generate sunt, n ordine, ion, inf i
ino, care este cel de-al doilea cuvnt obinut? (4p.)
a.
ofn
b.
ifo
c.
foi
d.
nif

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce valoare are f(3713,3)?
(6p.)
int f(int n,int c){
if(n==0)
return 0;
if(n%10==c)
return f(n/10,c)*10+c;
return f(n/10,c);
}
3. Fisierul text BAC.TXT conine, pe o singur linie, cel puin 3 i cel mult 100 de numere
naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un
spaiu. Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i scrie
pe ecran, n ordine descresctoare, cele mai mici 3 numere citite.
Exemplu: dac fiierul BAC.TXT conine numerele 1017 48 310 5710 162, atunci se
va afia: 310 162 48 (10p.)
4. Se consider subprogramul divizor, care:
primete prin intermediul parametrului, a, un numr natural nenul de cel mult 4 cifre;
furnizeaz prin intermediul parametrului d cel mai mare divizor al lui a strict mai mic dect
a;
a) Scriei numai antetul subprogramului divizor. (4p.)
b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur un
numr natural nenul x, de cel mult 4 cifre i, prin apeluri utile ale subprogramului divizor,
verific dac x este numr prim. Programul va afia pe ecran n caz afirmativ mesajul DA, iar
n caz contrar mesajul NU. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se utilizeaz metoda backtracking pentru a genera toate cuvintele care conin toate literele din
mulimea {i,n,f,o}, astfel nct fiecare liter s apar exact o dat ntr-un cuvnt. tiind c al
doilea cuvnt generat este info iar al treilea este ionf, care este ultimul cuvnt obinut? (4p.)
a.
nifo
b.
ofni
c.
ofin
d.
foni

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce valoare are f(261,31)?
(6p.)
int f(int a,int b)
{
if(a<10)
return b;
return f(a/10,b)*10+b+1;
}
3. Fisierul text bac.txt contine, pe o singur linie, cel puin 3 i cel mult 100 de numere
naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un
spaiu. Scriei un program C/C++ care citete numerele din fiier i scrie pe ecran ultima
cifr a produsului celor mai mari 3 numere citite.
Exemplu: dac fiierul bac.txt conine numerele:
1017 48 312 5742 162
atunci se va afia: 8 (ultima cifr a produsului numerelor 1017, 5742, 312) (10p.)
4. Se consider subprogramul divizor, care:
primete prin intermediul parametrului, a, un numr natural nenul de cel mult 4 cifre, strict
mai mare ca 1;
furnizeaz prin intermediul parametrului d, cel mai mic divizor al lui a strict mai mare
dect 1;
a) Scriei numai antetul subprogramului divizor. (4p.)
b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur un
numr natural x (x>1), i, prin apeluri utile ale subprogramului divizor, verific dac x
este numr prim. Programul va afia pe ecran, n caz afirmativ, mesajul DA, iar n caz
contrar mesajul NU. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se utilizeaz metoda backtracking pentru a genera toate cuvintele care conin toate literele din
mulimea {i,n,f,o}, astfel nct fiecare liter s apar exact o dat ntr-un cuvnt i literele n
i o s nu se afle pe poziii vecine. tiind c primul cuvnt generat este info, iar al treilea este
nifo care este cel de-al doilea cuvnt obinut? (4p.)
a.
iofn
b.
inof
c.
ionf
d.
niof

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce valoare are f(398,2008)?
(6p.)
int f(int a,int b){
if(2*a>=b)
return 0;
if(b%a==0)
return b-a;
return f(a+1,b-1);
}
3. Fisierul text bac.txt contine, pe o singur linie, cel mult 100 de numere naturale nenule de
cel mult 4 cifre fiecare, numerele fiind ordonate cresctor i separate prin cte un spaiu.
Scriei un program C/C++ care citete de la tastatur un numr natural x de cel mult 4 cifre
i verific dac x se afl n fiierul bac.txt. n caz afirmativ, se va afia pe ecran mesajul
DA, altfel se va afia mesajul NU.
Exemplu: dac x=312, iar fiierul bac.txt conine numerele:
17 48 312 5742 8692
atunci se va afia: DA ;
dac x=20, iar fiierul bac.txt conine numerele:
17 48 312 5742 8692
atunci se va afia: NU . (10p.)
4. Se consider subprogramul radical, care:
primete prin intermediul parametrului a, un numr natural nenul de cel mult 4 cifre;
furnizeaz prin intermediul parametrului x cel mai mare numr natural cu proprietatea c
x
2
este mai mic sau egal cu a; de exemplu, dac a=20, subprogramul va furniza prin x
valoarea 4;
a) Scriei numai antetul subprogramului radical. (4p.)
b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur un
numr natural nenul de cel mult 4 cifre, n, i prin apeluri utile ale subprogramului radical,
verific dac n este ptrat perfect. Programul va afia pe ecran n caz afirmativ mesajul DA,
iar n caz contrar mesajul NU. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Generarea matricelor ptratice de ordinul n, cu elemente 0 i 1, cu proprietatea c pe
fiecare linie i pe fiecare coloan exist un singur element egal cu 1, se poate realiza
utiliznd metoda backtracking. Algoritmul utilizat este echivalent cu algoritmul de generare
a: (4p.)
a. combinrilor b. permutrilor c. aranjamentelor d. produsului
cartezian

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider tabloul unidimensional a definit
global, ce memoreaz elementele a
1
=12, a
2
=35,
a
3
=2, a
4
=8 i subprogramul f, definit alturat. Ce
valoare are f(4)? (6p.)
int f(int x)
{if(x>=1)
return (a[x]+f(x-1))%10;
else
return 0;}
3. Subprogramul cifra primete prin singurul su parametru x, un numr real nenul pozitiv i
furnizeaz prin parametrul y valoarea cifrei unitilor prii ntregi a lui x.
Exemplu: la apelul cifra(34.567) se va returna 4.
a) Scriei definiia complet a subprogramului cifra. (10p.)
b) Fiierul text medii.txt conine cel mult 600 de linii. Pe fiecare linie se afl, separate
printr-un spaiu, dou numere reale, cu cel mult dou zecimale, din intervalul [1,10], care
reprezint media pe semestrul 1 respectiv media pe semestrul al 2-lea, ale unui elev. n
situaiile statistice pe care coala le realizeaz, fiecare medie este ncadrat ntr-una dintre
urmtoarele categorii de medii: [3,3.99], [4,4.99], [5,5.99], [6,6.99],
[7,7.99], [8,8.99], [9,10]. Scriei un program C/C++ care citete datele din fiier i
afieaz pe ecran numrul elevilor care au media din semestrul al 2-lea n categoria imediat
urmtoare categoriei creia i aparine media din semestrul 1. Ordinea categoriilor este cea
din enumerarea de mai sus. n program se vor folosi apeluri utile ale subprogramului cifra.
Se va utiliza un algoritm eficient din punctul de vedere al memoriei utilizate.
Exemplu: dac fiierul medii.txt conine:
9.45 7.90
6.34 7.60
8.75 9.90
(6p.)
Pe ecran se afieaz:
2

c) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Utiliznd metoda backtracking pentru afiarea tuturor modalitilor de descompunere a unui
numr natural ca o sum de numere naturale nenule, pentru n=3 se obin, n ordine,
soluiile: 1+1+1; 1+2; 2+1; 3. Ordinea de scriere a termenilor dintr-o descompunere este
semnificativ. Folosind aceeai metod pentru n=10, care este soluia generat imediat
dup 1+1+3+5? (4p.)
a.
1+1+4+1+1+1+1
b.
1+1+7+1
c.
1+2+7
d.
1+1+4+4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Considerm subprogramul f, definit alturat. Care va
fi valoarea variabilei globale x dup apelul
f(4962,x), dac nainte de apel, x are valoarea 0?
(6p.)
void f1(int n,int &a)
{int c;
if(n!=0){c=n%10;
if(a<c) a=c;
f1(n/10,a);}}
3. Scriei un program C/C++ care afieaz pe ecran, primii 40 de termeni impari ai irului lui
Fibonacci 0,1,1,2,3,5,8,13,21,, cte 5 pe o linie. Termenii afiai pe aceeai linie a
ecranului vor fi separai ntre ei prin cte un spaiu. (10p.)
4. a) Fiierul date.in conine un ir de cel mult 10000 numere naturale cu cel mult 2 cifre
fiecare, separate prin cte un spaiu. Scriei un program C/C++ care citete numerele din
fiierul date.in i scrie n fiierul text date.out, valorile distincte citite, separate prin cte
un spaiu, respectndu-se regula: pe prima linie vor fi scrise numerele impare n ordine
cresctoare, iar pe linia a doua numerele pare, n ordine descresctoare. Alegei o metod
eficient din punctul de vedere al timpului de executare. (6p.)
Exemplu: dac pe prima linie a fiierului date.in se afl numerele:
75 12 3 3 18 75 1 3
atunci fiierul date.out va conine:
1 3 75
18 12
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz, prin metoda backtracking toate partiiile mulimii A={1,2,3} obinndu-se
urmtoarele soluii: {1}{2}{3};{1}{2,3};{1,3}{2};{1,2}{3};{1,2,3}. Se observ
c dintre acestea, prima soluie e alctuit din exact trei submulimi. Dac se folosete
aceeai metod pentru a genera partiiile mulimii {1,2,3,4} stabilii cte dintre soluiile
generate vor fi alctuite din exact trei submulimi. (4p.)
a.
3
b.
12
c.
6
d.
5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Se consider tabloul unidimensional a definit
global, ce memoreaz elementele a
1
=1, a
2
=2,
a
3
=0 i subprogramul f, definit alturat. Ce
valoare are f(3,3)? (6p.)
int f(int b,int i)
{ if(i>=1)
return f(b,i-1)*b+a[i];
else return 0;}
3. Subprogramul verif primete prin singurul su parametru, x, un numr natural nenul cu
cel mult 9 cifre i returneaz valoarea 1 dac numrul conine cel puin o secven de 3
cifre impare alturate i 0 n caz contrar.
Exemplu: la apelul verif(7325972) se va returna valoarea 1.
a) Scriei definiia complet a subprogramului verif. (10p.)
b) Fiierul text date.txt conine pe prima linie un numr natural nenul n cu cel mult 4 cifre
i pe fiecare dintre urmtoarele n linii cte un numr natural, cu exact 6 cifre. Scriei un
program C/C++ care citete numerele din fiierul date.txt i afieaz pe ecran, separate
prin cte un spaiu, acele numere care au primele 3 cifre impare. Se vor utiliza apeluri utile
ale subprogramului verif. Dac nu exist niciun numr cu aceast proprietate, se va afia
mesajul nu. Alegei o metod eficient din punctul de vedere al memoriei utilizate.


De exemplu: dac fiierul date.txt conine
3
133579
345796
973314
(6p.)
Pe ecran se afieaz:
133579 973314
c) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz, prin metoda backtracking, toate modalitile de aezare a numerelor
naturale de la 1 la 5, astfel nct oricare 2 numere consecutive s nu se afle pe poziii
alturate. Dac primele 2 soluii sunt: (1,3,5,2,4) i (1,4,2,5,3), care este prima
soluie generat n care primul numr este 4? (4 p.)
a. (4, 1, 3, 2, 5) b. (4,2,5,1, 3) c. (4, 3, 5, 3, 1) d. (4, 1, 3, 5, 2)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce se va afia n urma apelului
f(5,0)?
(6p.)
void f(int i,int j)
{ if(j<=9) f(i,j+1);
printf(%d*%d=%d\n,i,j,i*j);/
cout<<i<<*<<j<<=<<i*j<<endl;
}
3. Subprogramul diviz primete prin intermediul parametrului n un numr natural nenul
(2n200), iar prin intermediul parametrului a, un tablou unidimensional care conine n
valori naturale nenule, fiecare dintre acestea avnd cel mult patru cifre.
Subprogramul returneaz o valoare egal cu numrul de perechi (a
i
,a
j
), 1i<jn, n
care a
i
este divizor a lui a
j
, sau a
j
este divizor a lui a
i
.
Scriei definiia complet a subprogramului diviz, n limbajul C/C++.
Exemplu: pentru n=5 i a=(4,8,3,9,4) subprogramul returneaz valoarea 4. (10p.)
4. Fiierul text date.in conine pe prima linie , separate prin cte un spaiu, cel mult 1000
numere naturale, fiecare dintre ele avnd maximum 9 cifre.
a) Scriei un program C/C++ care citete numerele din fiierul date.txt i determin cea
mai lung secven ordonat strict descresctor, format din valori citite consecutiv din
fiier. Numerele din secvena gsit vor fi afiate pe ecran, pe o linie, separate prin cte un
spaiu. Dac sunt mai multe secvene care respect condiia impus, se va afia doar prima
dintre acestea. Alegei o metod de rezolvare eficient din punctul de vedere al timpului de
executare.

Exemplu: dac fiierul date.in conine
5 2 9 4 3 6 3 2 1 0 8
(6p.)
pe ecran se afieaz:
6 3 2 1 0
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). ( 4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz, prin metoda backtracking, toate modalitile de aezare a numerelor
naturale de la 1 la 5 astfel nct oricare dou numere consecutive s nu se afle pe poziii
alturate. Dac primele 2 soluii sunt: (1,3,5,2,4) i (1,4,2,5,3), care este prima
soluie generat care ncepe cu 2? (4p.)
a. (2, 4, 1, 3, 5) b. (2, 5, 4, 3, 1) c. (2, 4, 1, 3, 1) d. (2, 3, 5, 4, 1)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider funcia f, definit alturat.
Ce se afieaz ca urmare a executrii secvenei de
mai jos ?
a=4; b=18;
printf(%d,f(a,b));/ cout<<f(a,b);
printf(%d %d,a,b);/ cout<<a<<b;
(6p.)
int f(unsigned int &a,
unsigned int &b)
{ while (a !=b)
if (a>b) a=a-b;
else b=b-a;
return a;}
3. Subprogram sfx primete prin singurul su parametru, x, un numr natural din intervalul
[100,2000000000] i returneaz valoarea 1 dac ultimele trei cifre ale numrului sunt n
ordine strict descresctoare sau valoarea 0 n caz contrar.
Exemplu: la apelul sfx(24973) se va returna valoarea 1.
a) Scriei definiia complet a subprogramului sfx. (10p.)
b) Fiierul text date.in conine cel mult 10000 de numere naturale de exact 6 cifre fiecare,
separate prin cte un spaiu. Scriei un program C/C++ care citete toate numerele din fiier,
determin i afieaz pe ecran cte dintre aceste numere au toate cifrele n ordine strict
descresctoare. Programul va folosi apeluri utile ale subprogramului sfx. Se va utiliza un
algoritm eficient din punctul de vedere al memoriei utilizate. (6p.)

Exemplu: dac fiierul date.in conine
236543
865210
976532
(6p.)
Pe ecran se afieaz:
2
c) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). ( 4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz n ordine cresctoare, toate numerele naturale de 5 cifre distincte, care se
pot forma cu cifrele 2,3,4,5 i 6. S se precizeze numrul generat imediat naintea i
numrul generat imediat dup secvena urmtoare : 34256, 34265, 34526, 34562 (4p.)
a. 32645 i 34625 b. 32654 i 34655
c.
32654 i 34625
d.
32645 i 34655

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul recursiv definit
alturat. Ce valoare are functie(4)? (6p.)
int functie(int x)
{
if (x<=0) return 3 ;
else return functie(x-3)*4 ;}
3. S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete
prin intermediul parametrului n un numr natural nenul (1n10000), iar prin intermediul
parametrului a, un tablou unidimensional care conine n valori ntregi, fiecare dintre aceste
valori ntregi avnd cel mult 9 cifre. Subprogramul returneaz cel mai mare divizor comun al
elementelor tabloului a. (10p.)

Exemplu: n urma apelului calcul(n,a) pentru n=5 i tabloul unidimensional
12,36,48,6,60 se va returna 6.
4. Fiierele text A.TXT i B.TXT conin cel mult 10000 de numere naturale cu cel mult 9 cifre
fiecare, scrise fiecare pe cte o linie.
a) Scriei un program C/C++ care citete numerele din cele dou fiiere i, printr-o metod
eficient din punct de vedere al timpului de executare i al spaiului de memorie utilizat i
afieaz pe ecran cte dintre numerele din fiierul A.TXT sunt strict mai mici dect toate
numerele memorate n fiierul B.TXT. (6p.)

Exemplu: dac fiierul A.TXT
are coninutul alturat
41111
81111
11111
91111
51111
111111
31111
431111
61111
201111
iar fiierul B.TXT are coninutul
alturat:
91111
91111
61111
91111
91111
81111
61111
91111


atunci programul va afia valoarea 4 deoarece 41111, 11111, 51111, 31111 sunt mai
mici dect toate elementele din fiierul B.TXT
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia. (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz n ordine cresctoare, toate numerele naturale de 5 cifre distincte, care se
pot forma cu cifrele 5,6,7,8 i 9. S se precizeze numrul generat imediat naintea i
numrul generat imediat dup secvena urmtoare : 67589,67598,67859,67895. (4p.)
a. 65987 i 67958 b. 65978 i 67988
c. 65978 i 67958 d. 65987 i 67988

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul recursiv definit
alturat. Pentru ce valoare a parametrului u,
alfa(u) are valoarea 25 ? Pentru u=6, ce
valoarea returneaz alfa(u)? (6p.)
int alfa(int u)
{if (u==0) return 3;
else return alfa(u-1)+3*u-2;
}
3. S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete
prin intermediul parametrului n un numr natural nenul (1n10000), iar prin intermediul
parametrului a, un tablou unidimensional care conine n valori ntregi, fiecare dintre aceste
valori ntregi avnd cel mult 9 cifre. Subprogramul returneaz numrul de numere prime din
tablou. (10p.)

Exemplu: n urma apelului calcul(n,a) pentru n=5 i tabloul unidimensional
12,37,43,6,71 se va returna 3.
4. Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a
doua linie, un ir cresctor de n numere naturale, fiecare avnd cel mult 9 cifre. Numerele
de pe a doua linie sunt separate prin cte un spaiu.
a) Scriei un program C/C++ care utiliznd o metod eficient din punct de vedere al
timpului de executare i al spaiului de memorie, afieaz pe ecran elementele distincte ale
irului aflat pe a doua linie a fiierului. (6p.)

Exemplu: dac fiierul NUMERE.TXT are
coninutul alturat
7
111 111 111 2111 4111 71111 71111


atunci programul va afia pe ecran 111 2111 4111 71111
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia. (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se utilizeaz metoda backtracking pentru a genera toate submulimile cu p elemente ale
unei mulimi cu m elemente.
Dac m=7 i p=4 atunci numrul de submulimi generate este : (4p.)
a.
60
b.
35
c.
5
d.
15

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul
recursiv definit alturat. Ce valori
vor fi afiate pe ecran n urma
apelului gama(6)? (6p.)
void gama(int n)
{int i;
if(n>=3)
{for(i=3;i<=n;i++)
printf(%d ,n); | cout<<n<< ;
gama(n-3);}}
3. S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete
prin intermediul celor doi parametri ai si dou numere ntregi n i k (1n10000)
(1k5) i returneaz cifra de rang k a numrului n. Rangul unei cifre este numrul su
de ordine, numerotnd cifrele de la dreapta la stnga; cifra unitilor are rangul 1.
Dac numrul k este mai mare dect numrul de cifre a lui n atunci funcia returneaz
valoarea -1. (10p.)
Exemplu : n urma apelului calcul(9243, 3) se va returna 2
4. Fiierul text SIR.TXT conine pe prima linie un numr natural n (1n10000) i pe a
doua linie, separate prin spaii, un ir cresctor de n numere naturale cu cel mult 9 cifre
fiecare.
Numim platou ntr-un ir de valori, o secven de elemente identice situate pe poziii
alturate. Lungimea unui platou este egal cu numrul de elemente care l formeaz.
a) Scriei un program C/C++ care citete valorile din fiier i, printr-o metod eficient din
punct de vedere al timpului de executare i al spaiului de memorie utilizat afieaz pe
ecran, separate prin cte un spaiu, lungimea maxim a unui platou, precum i valoarea
care formeaz platoul. n cazul n care sunt mai multe platouri de aceeai lungime se va
afia valoarea cea mai mare care formeaz unul dintre aceste platouri. (6p.)

Exemplu: dac
fiierul SIR.TXT are
coninutul alturat
10
111 2111 2111 2111 3111 4111 4111 51111 51111 51111
atunci programul va afia pe ecran 3 51111

b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia. (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Construim anagramele unui cuvnt c
1
c
2
c
3
c
4
prin generarea n ordine lexicografic a
permutrilor indicilor literelor cuvntului i obinem c
1
c
2
c
3
c
4
c
1
c
2
c
4
c
3
c
1
c
3
c
2
c
4
c
4
c
3
c
1
c
2
c
4
c
3
c
2
c
1
. Pentru anagramele cuvntului rateu, dup irul raetu, raeut, raute cuvintele
imediat urmtoare sunt: (4p.)
a. rauet i rtaeu b. rtaeu i rtaue
c. rauet i rtaue d. rtaeu i ratue

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul recursiv
definit alturat. Ce valori vor fi
afiate pe ecran n urma apelului
beta(15)? (6p.)
void beta(int n)
{if (n!=1)
{printf(%d ,n); | cout<<n<< ;
if (n%3==0) beta(n/3);
else beta(2*n-1);}
else printf(%d,1); | cout<<1;}
3. S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete
prin intermediul parametrului ntreg n, un numr natural de cel mult 9 cifre i returneaz
valoarea absolut a diferenei dintre numrul de cifre pare i numrul de cifre impare
coninute de n. (10p.)
Exemplu : n urma apelului calcul(92465) se va returna valoarea 1.
4. Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a
doua linie, separate prin spaii, n numere naturale cu cel mult 9 cifre fiecare. Aceste numere
sunt dispuse n ordine cresctoare i separate ntre ele printr-un spaiu.
a) Scriei un program C/C++ care citete valorile din fiier i, printr-o metod eficient din
punct de vedere al timpului de executare i al spaiului de memorie utilizat, afieaz pe
ecran separate printr-un spaiu, n ordine cresctoare, numerele pare de pe a doua linie a
fiierului, urmate de cele impare n ordine descresctoare. (6p.)
Exemplu: dac fiierul NUMERE.TXT are
coninutul alturat
6
212 412 5111 71113 81112 101112
atunci programul va afia pe ecran 212 412 81112 101112 71113 5111

b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia. (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Pentru rezolvarea crei probleme dintre cele enumerate mai jos se poate utiliza metoda
backtracking ? (4p.)
a. determinarea reuniunii a 3 mulimi b. determinarea tuturor divizorilor unui
numr din 3 cifre
c. determinarea tuturor elementelor mai mici
dect 30000 din irul lui Fibonacci
d. avnd 3 culori (rou, galben,
albastru), determinarea tuturor
variantelor n care se pot genera toate
steagurile cu 3 culori avnd la mijloc
culoarea galben

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul recursiv definit alturat.
Care este cea mai mic valoare de 2 cifre a lui u pentru care
funcia bac(u,2) are valoarea 1 ? (6p.)
int bac(int u, int x)
{if (u<x)return 0;
if (x==u)return 1;
else
if (u%x==0)return 0;
else
return bac(u,x+1);}
3. S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete prin
parametrul n un numr natural nenul de cel mult 9 cifre i furnizeaz prin parametrul x, numrul
obinut prin citirea cifrelor pare ale lui n de la dreapta la stnga. Dac n nu conine nici o cifr par
x primete valoarea 0. (10p.)
Exemplu : n urma apelului calcul(9278,x), x primete valoarea 82.
4. Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a
doua linie, n numere naturale cu cel mult 9 cifre fiecare, numere nu neaprat distincte.
Aceste numere sunt dispuse n ordine cresctoare i separate ntre ele printr-un spaiu.
a) Scriei un program C/C++ care citete valorile din fiier i, printr-o metod eficient din
punct de vedere al timpului de executare i al spaiului de memorie utilizat, afieaz pe
ecran, cu cte un spaiu ntre ele, valoarea care apare de cele mai multe ori n fiier i de
cte ori apare ea. Dac exist mai multe valori care apar de un numr maxim de ori, se va
afia cea mai mic dintre ele. (6p.)
Exemplu: dac fiierul
NUMERE.TXT are coninutul
alturat
8
711 711 711 11111 11111 11111 191111 231111
atunci programul va afia pe ecran 711 3

b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia. (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz n ordine cresctoare toate numerele de exact 4 cifre, care se pot forma cu
elementele mulimii {0,1,2,3,4}. Primele soluii 8 generate sunt, n ordine: 1000, 1001,
1002, 1003, 1004, 1010, 1011, 1012. Care sunt primele trei numere ce se vor genera
imediat dup numrul 3443? (4p.)
a.
4000,4001,4002
b.
3444,4443,4444
c.
3444,4444,4000
d.
3444,4000,4001

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Ce valoare va avea variabila ntreag x, n
urma apelului F(1, x), tiind c, nainte de
apel, variabila x are valoarea 0, iar
subprogramul F este definit alturat?
(6p.)

void F(int i, int &x)
{ if (i <= 10)
{ if(i % 2) x = x + 2;
else x = x 1;
F(i + 1, x);
}
}
3. Un numr natural se numete palindrom dac numrul citit de la stnga la dreapta este egal
cu numrul citit de la dreapta la stnga.
Scriei definiia complet a subprogramului Palindrom care primete prin intermediul
parametrului n un numr natural de cel mult nou cifre i returneaz 1 dac acesta este
palindrom i 0 n caz contrar. (10p.)
4. Fiierul text NUMERE.IN conine cel mult 100000 numere naturale de cel mult nou cifre
fiecare, numerele fiind desprite prin cte un spaiu.
a) Scriei programul C/C++ care citete numerele din fiierul NUMERE.IN i, folosind apeluri
utile ale subprogramului Palindrom definit la punctul 3, determin n mod eficient, din
punct de vedere al memoriei utilizate i al timpului de executare, care este cel mai mare
numr palindrom citit i de cte ori apare el n fiierul NUMERE.IN. Programul scrie n
fiierul text NUMERE.OUT numrul astfel determinat precum i numrul de apariii ale
acestuia, pe rnduri diferite.
Exemplu: dac NUMERE.IN conine numerele:
23 565 78687 7887 7865 78687 7887 23 78687 98798
atunci NUMERE.OUT va conine:
78687
3 (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz n ordine cresctoare toate numerele de 4 cifre, cu cifre distincte, astfel nct
diferena n valoare absolut dintre prima i ultima, respectiv a doua i a treia cifr este
egal cu 2. Primele 11 soluii generate sunt, n ordine: 1023, 1203, 1243, 1423, 1463,
1573, 1643, 1683, 1753, 1793, 1863. Care dintre urmtoarele numere se va genera
imediat naintea numrului 9317? (4p.)
a.
9247
b.
9357
c.
9207
d.
8976

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Scriei ce se va afia n urma
executrii subprogramului alturat,
la apelul F(57). (6p.)
void F(int x)
{ if(x != 0)
{ F(x/2);
cout << x%2; | printf(%d, x%2);
}
}
3. Scriei definiia complet a subprogramului Ecuaie care primete prin parametrii a, b i c
trei numere ntregi, a 0, de cel mult patru cifre fiecare, reprezentnd coeficienii ecuaiei de
gradul al II-lea: ax
2
+bx+c=0. n funcie de soluiile ecuaiei subprogramul va returna:
cea mai mare dintre soluii dac ecuaia are dou soluii reale distincte, dintre care cel
puin una pozitiv.
una dintre soluii dac ecuaia are dou soluii egale i pozitive.
-32000 n celelalte cazuri. (10p.)
4. Se consider irul s: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 1, 2,... .
Pentru un numr natural k, 0<k100000, se cere s se determine valoarea elementului ce
se afl pe poziia k n irul s.
Exemplu: pentru k=5 numrul cerut este 2.
a) Scriei un program C/C++ care citete de la tastatur valoarea numrului natural k i, prin
apeluri utile ale funciei Ecuaie, definite la punctul 3, determin valoarea elementului ce
se afl pe poziia k n irul s, folosind un algoritm eficient din punctul de vedere al spaiului
de memorie alocat i al timpului de executare. Valoarea astfel determinat se va scrie n
fiierul text sir.out. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri) (4p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se genereaz n ordine cresctoare toate numerele de 4 cifre, cu cifre distincte, astfel nct
diferena n valoare absolut dintre ultimele dou cifre ale fiecrui numr generat este egal
cu 2. Primele opt soluii generate sunt, n ordine: 1024, 1035, 1042, 1046, 1053, 1057,
1064, 1068. Care dintre urmtoarele numere se va genera imediat dup numrul 8975?
(4p.)
a.
8979
b.
9013
c.
8957
d.
9024

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Ce se va afia n urma executrii
subprogramului alturat, la apelul
F(56)? (6p.)
void F(int x)
{ if(x)
{ F(x/2);
cout << x%10; | printf(%d,x%10);
}
}
3. a) Scriei definiia complet a subprogramului Cautare, cu 3 parametri, care primete prin
parametrul n un numr natural (1n100), prin parametrul x un tablou unidimensional
format din n componente (numere ntregi de cel mult patru cifre fiecare: x
1
, x
2
, , x
n
)
memorate n ordine cresctoare i prin parametrul val un numr ntreg de cel mult patru
cifre, diferit de oricare dintre elementele tabloului unidimensional x.
Subprogramul va cuta, n mod eficient din punct de vedere al timpului de executare, poziia
pe care ar trebui inserat valoarea val n irul x astfel nct s se obin tot un ir ordonat
i returneaz aceast poziie. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri) (4p.)
4. Fiierul text sir.in conine cel mult 1000 numere naturale de maximum patru cifre
fiecare, numerele fiind diferite dou cte dou i desprite prin cte un spaiu.
Scriei un program C/C++ care citete numerele din fiierul sir.in i, folosind apeluri utile
ale subprogramului Cautare, definit la punctul 3, construiete n memorie un tablou
unidimensional care va conine toate numerele din fiierul sir.in ordonate cresctor.
Programul scrie n fiierul text sir.out irul obinut, cte 10 elemente pe un rnd,
elementele de pe acelai rnd fiind desprite printr-un singur spaiu.
Exemplu: dac fiierul sir.in conine numerele: 7 -5 635 -456 0 8 587 -98 65 3 -8
atunci dup executarea programului fiierul sir.out va conine:
-456 -98 -8 -5 0 3 7 8 65 587
635 (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Prin metoda backtracking se genereaz toate anagramele (cuvintele obinute prin
permutarea literelor) unui cuvnt dat. tiind c se aplic aceast metod pentru cuvntul
pescar, precizai cte cuvinte se vor genera astfel nct prima i ultima liter din fiecare
cuvnt generat s fie vocal (sunt considerate vocale caracterele a, e, i , o, u)? (4p.)
a.
96
b.
24
c.
48
d.
12

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider funcia Suma, definit
alturat. Ce valoare are Suma(8)? Dar
Suma(11)? (6p.)
int Suma(int x)
{ if(x == 1 ) return 0;
if(x%2==0) return Suma(x-1)+(x-1)*x;
return Suma(x-1)-(x-1)*x;
}
3. Scriei definiia complet a subprogramului Cifra cu doi parametri n i x, care primete prin
intermediul parametrului n un numr natural de cel mult nou cifre i furnizeaz prin
parametrul x cea mai mare cifr a numrului transmis prin parametrul n. (10p.)
4. a) Se numete numr mare un numr care are mai mult de nou cifre.
Scriei un program C/C++ care citete din fiierul text NUMERE.IN un numr natural n (10
<n < 1000) apoi de pe urmtoarea linie n numere naturale cu cel mult nou cifre fiecare,
dintre care cel puin unul nenul, i folosind apeluri ale funciei Cifra definit la punctul 3
construiete n mod eficient din punct de vedere al memoriei folosite, cel mai mic numr
mare cu exact n cifre. Fiecare dintre cifrele numrului mare reprezint cifra de valoare
maxim a unui numr citit din fiier i nu exist dou cifre n numrul mare care s
aparin aceluiai numr citit. Scriei n fiierul text NUMERE.OUT numrul mare obinut
astfel. (6p.)
b) Descriei succint n limbaj natural metoda de rezolvare folosit explicnd n ce const
eficiena ei (3 4 rnduri) (4p.))
Exemplu:
NUMERE.IN NUMERE.OUT
10
725 3695 423 0 7895 0 100 101 870 568
1001478899


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Ce se va afia n urma apelului
F(2758), pentru funcia F
definit alturat? (4p.)
int F(int x)
{
if(x == 0) return 0;
if(x%10%2 == 0) return 2 + F(x/10);
return 10 F(x/10);
}
a.
0
b.
20
c.
12
d.
4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Variabilele i, j i aux sunt de tip ntreg, iar
elementele tabloului unidimensional x sunt
urmatoarele: x
0
=10, x
1
=5, x
2
=-6, x
3
=7,
x
4
=0, x
5
=-2.
Ce valori se vor afia n urma executrii
secvenei de program alturate? (6p.)

for(int i = 0; i < 4; i++)
for(int j = i + 1; j< 6; j++)
if(x[i] > x[j])
{ aux = x[i];
x[i] = x[j];
x[j] = aux;
}
for(i = 0; i < n; i++)
cout<<x[i]<< ;
| printf(%d ,x[i]);
3. a) Scriei definiia complet a funciei UltimaCifra care primete prin cei doi parametri a
i b cte un numr natural (0<a<1000000, 0<b<1000000), calculeaz n mod eficient din
punct de vedere al timpului de executare i returneaz ultima cifr a numrului a
b
(a la
puterea b). (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri) (4p.)
Fiierul text SIR.IN conine pe prima sa linie un numr natural n (0<n<1001), iar pe
fiecare dintre urmtoarele n linii cte o pereche de numere naturale, x
i
y
i
(1in,
x
i
30000, y
i
30000).
Scriei programul C/C++ care citete numerele din fiierul SIR.IN i scrie n fiierul text
SIR.OUT ultima cifr expresiei:
n 2 1
y
n
y
2
y
1
x ... x x + + +
,folosind apeluri ale funciei
UltimaCifra, definit la punctul 3.
4.
Exemplu: dac fiierul SIR.IN are coninutul alturat, atunci
SIR.OUT va conine numrul 2. (10p.)
3
125 26
458 146
323 4589

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Dac se utilizeaz metoda backtracking pentru a genera toate permutrile de 4 obiecte i
primele 5 permutri generate sunt, n aceast ordine, 4 3 2 1, 4 3 1 2, 4 2 3 1, 4 2 1
3, 4 1 3 2, atunci a 6-a permutare este: (4p.)
a.
3 2 1 4
b.
3 4 2 1
c.
1 4 3 2
d.
4 1 2 3

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului
sub, stabilii ce valoare are
sub(132764).
(6p.)
long sub(long n)
{if (n!=0)
if(n%2!=0) return n%10*sub(n/10);
else return sub(n/10);
else return 1;
}
3. Scriei definiia complet a unui subprogram s care primete prin intermediul parametrului
n un numr natural de maximum 9 cifre, prin intermediul parametrului c o cifr i
furnizeaz prin intermediul parametrului k numrul de cifre ale numrului n care apari
intervalului [c-1,c+1].
Exemplu: pentru n=1233 i c=3, k va avea valoarea 3, iar pentru n=650 i c=3, k va
avea valoarea 0. (10p.)
4.
Fiierul BAC.TXT are pe prima linie dou numere naturale n i m (0<n<1000, 0<m<1000)
separate prin cte un spaiu, pe linia a doua n numere ntregi ordonate strict cresctor, iar
pe linia a treia m numere naturale distincte. S se scrie programul C/C++ care citete toate
numerele din fiier i afieaz pe ecran, desprite prin cte un spaiu, toate numerele din a
doua linie a fiierului care apar cel puin o dat i n linia a treia a acestuia
Exemplu: dac fiierul are urmtorul coninut:
7 5
2 3 4 5 8 9
4 5 2 11 8
atunci se va afia: 5 2 8, nu neaprat n aceast ordine.
a) Descriei n limbaj natural o metod eficient de rezolvare ca timp de executare. (4p.)
b) Scriei programul C/C++ corespunztor metodei descrise la punctul a). (6p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
La un concurs sportiv sunt 5 echipe, iar n fiecare echip sunt cte 10 elevi. Problema
determinrii tuturor grupelor de cte 5 elevi, cte unul din fiecare echip, este similar cu
generarea tuturor: (4p.)
a. elementelor produsului cartezian
AxAxAxAxA, unde A={1,2,,10}
b. submulimilor cu 5 elemente ale mulimii
{1,2,,10}
c. permutrilor mulimii {1,2,3,4,5} d. partiiilor mulimii {1,2,,10}

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului
sub, stabilii ce valoare are
sub(132764).
(6p.)
int sub(long n)
{if (n!=0)
if(n%2!=0) return n%10+sub(n/10);
else return sub(n/10);
else return 0;
}
3. Scriei un program C/C++ care citete dou numere naturale nenule n i k (0<n<100,
0<k<4) i apoi n numere reale pozitive care au cel mult 3 cifre la partea ntreag i cel mult
5 cifre zecimale i afieaz pe ecran numrul de valori reale citite care au mai mult de k
cifre zecimale.
Exemplu: dac pentru n se citete valoarea 5 i pentru k valoarea 2 i apoi irul de
numere reale 6.2 4.234 2 8.13 10.001 pe ecran se va afia valoarea 2. (10p.)
4. Fiierul text bac.in conine pe prima sa linie un numr natural n (0<n<10000), iar pe
urmtoarea linie n numere naturale din intervalul [1,100] separate prin cte un spaiu. Se
cere s se citesc din fiier toate numerele i s se afieze pe ecran numrul sau numerele
care apar de cele mai multe ori printre numerele citite. Numerele afiate vor fi separate prin
cte un spaiu. Alegei un algoritm de rezolvare eficient att din punctul de vedere al timpului
de executare ct i al gestionrii memoriei. .
Exemplu: pentru n=12 i numerele 1 2 2 3 2 9 3 3 9 9 7 1 se vor afia valorile 2, 3
i 9.
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv problema enunat, corespunztor metodei descrise
la punctul a). (6p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Un program construiete elementele produsului cartezian AxBxC pentru mulimile
A={1,2,3,4}, B={1,2,3}, C={1,2}. Care dintre urmtoarele triplete NU va fi afiat?
(4p.)
a.
(3,2,1)
b.
(1,3,2)
c.
(1,2,3)
d.
(2,2,2)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului
sub, stabilii care este valoarea expresiei
sub(123986).
(6p.)
int sub(long n)
{if (n!=0)
if(n%2!=0) return 1+sub(n/10);
else return sub(n/10);
else return 0;
}
3. a) Scriei doar antetul unui subprogram prim cu doi parametri, care primete prin
intermediul parametrului n un numr natural cu cel mult patru cifre i returneaz prin
intermediului parametrului p valoarea 1 dac n este prim i 0 n caz contrar. (2p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (3<n<10000)
i afieaz pe ecran, desprite prin cte un spaiu, primele n numerele prime, utiliznd
apeluri utile ale subprogramului prim. (8p.)
Exemplu: pentru n=4 pe ecran vor fi afiate numerele 2 3 5 7
4. Fiierul text bac.in conine pe prima sa linie un numr natural n (0<n<10000), iar pe
urmtoarea linie n numere naturale din intervalul [1,100]. Se cere s se citesc din fiier
toate numerele i s se afieze pe ecran, n ordine descresctoare, toate numerele care
apar pe a doua linie a fiierului i numrul de apariii ale fiecruia. Dac un numr apare de
mai multe ori, el va fi afiat o singur dat. Fiecare pereche valoare - numr de apariii va fi
afiat pe cte o linie a ecranului, numerele fiind separate printr-un spaiu, ca n exemplu.
Alegei un algoritm de rezolvare eficient din punctul de vedere al timpului de executare.
Exemplu: dac se citete pentru n valoarea 12 i apoi numerele 1 2 2 3 2 2 3 3 2
3 2 1 se va afia:
3 4
2 6
1 2
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv problema enunat, corespunztor metodei descrise
la punctul a). (6p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Problema generrii tuturor codurilor formate din exact 4 cifre nenule, cu toate cifrele
distincte dou cte dou, este similar cu generarea tuturor: (4p.)
a. aranjamentelor de 9 elemente luate cte
4
b. permutrilor elementelor unei mulimi cu
4 elemente
c. elementelor produsului cartezian
AxAxAxA unde A este o mulime cu 9
elemente
d. submultimilor cu 4 elemente ale mulimii
{1,2,3,4,5,6,7,8,9}

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului f,
ce valoare are expresia f(1209986)?
(6p.)
int f(long x)
{ int y,z;
if (x==0) return x;
else {y=x%10;
z=f(x/10);
if(y>z) return y ;
else return z;}
}
3. Scriei definiia complet a unui subprogram max care primete prin intermdiul parametrilor a
i b dou numere reale cu cel mult 4 cifre la partea ntreag i cel mult 5 zecimale fiecare.
Subprogramul determin cel mai mare numr real dintre urmtoarele 4 valori: a, b i
numerele reale obinute din a i b prin interschimbarea prii ntregi cu partea fracionar n
cadrul aceluiai numr. Aceast valoare este furnizat prin intermediul parametrului real c.
Exemplu: dac a=3.17 i b=15.23, c va avea valoarea 23.15 (10p.)
4. Se citete de pe prima linie a fiierului numere.in un numr natural n (0<n<10000) i de
pe a doua linie a fiierului n numere naturale din intervalul [1,100] i se cere s se afieze
pe ecran, desprite prin cte un spaiu, numrul sau numerele ntregi din intervalul
[1,100] care nu apar printre numerele citite. Dac pe a doua linie a fiierului apar toate
numerele din intervalul precizat se va afia mesajul NU LIPSESTE NICIUN NUMAR. Alegei
un algoritm de rezolvare eficient att din punctul de vedere al timpului de executare.
Exemplu: pentru fiierul numere.in cu urmtorul coninut
12
1 2 3 4 5 6 7 8 9 10 11 100
se vor afia valorile 12 13 99.
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv problema enunat, corespunztor metodei descrise
la punctul a). (6p.)



v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
O clas de 28 de elevi este la ora de educaie fizic i profesorul dorete s formeze o
echip de 4 elevi. Ordinea elevilor n cadrul echipei nu conteaz. Algoritmul de generare a
tuturor posibilitilor de a forma o asfel de echip este similar cu algoritmul de generare a
tuturor: (4p.)
a. aranjamentelor de 28 de elemente luate
cte 4
b. combinrilor de 28 de elemente luate
cte 4
c. partiiilor unei mulimi d. elementelor produsului cartezian
AxAxAxA, A fiind o mulime cu 28 de
elemente

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului
sub, ce valoare are sub(132764)?
(6p.)
int sub(long n)
{if (n!=0)
if(n%2!=0) return n%10+sub(n/10);
else return sub(n/10);
else return 0;}
3. Fiierul text bac.in conine cel mult 1000 de numere naturale cu cel mult patru cifre
fiecare, desprite prin cte un spaiu. Scriei programul C/C++ care citete numerele din
fiier i afieaz pe ecran, n ordine cresctoare, acele numere din fiier care au toate cifrele
egale. Dac fiierul nu conine niciun astfel de numr, se va afia pe ecran mesajul NU
EXISTA.
Exemplu: dac fiierul bac.in conine numerele: 30 44 111 7 25 5 atunci pe ecran
se va afia 5 7 44 111. (10p.)
4. a) Scriei definiia complet a unui subprogram cif_dis cu doi parametri, care primete
prin intermediul parametrului n un numr natural cu cel mult 9 cifre i returneaz prin
intermediul parametrului d valoarea 1 dac n are toate cifrele distincte dou cte dou i 0
n caz contrar.. (4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural nenul n
(0<n<100) i apoi n numere cu cel mult 9 cifre fiecare, determin i afieaz pe ecran cte
dintre numerele citite au toate cifrele distincte dou cte dou, utiliznd apeluri utile ale
subprogramului cif_dis.
Exemplu: dac n=5 i numerele 223 3456 809 3445 123456
se va afia pe ecran valoarea 3. (6p.)


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n nvmntul
Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {1,2,3} se genereaz, n ordinea cresctoare a valorii, toate numerele
pare formate din trei cifre distincte. Astfel se obin n ordine, numerele: 132, 312. Folosind
aceeai metod se genereaz numerele pare formate din patru cifre distincte din mulimea
{1,2,3,4}. Care va fi al 5-lea numr generat ? (4p.)
a.
2134
b.
1432
c.
2314
d.
2314

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Pentru definiia alturat a
subprogramului f, scriei ce
valoare are f(5552,5). (6p.)

int f(int x,int y)
{ if(x==0)return 0;
else
if(x%10==y) return f(x/10,y)+1;
else return f(x/10,y);
}
3.
Scriei n C/C++ definiia complet a subprogramului medie care are doi parametri:
- n, prin care primete un numr natural (1n100)
- v, prin care primete un tablou unidimensional cu n elemente, fiecare element avnd cel mult
patru cifre.
Subprogramul returneaz media aritmetic a elementelor din tablou. (10p.)
Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale nenule
mai mici sau egale dect 500, desprite prin cte un spaiu.
a) Scriei programul C/C++ care, utiliznd un algoritm eficient din punct de vedere al timpului
de executare, afieaz pe ecran, n ordine cresctoare, toate numerele care au aprut exact o
singur dat din fiierul NUMERE.IN, desprite prin cte un spaiu.
4.
Exemplu: dac fiierul NUMERE.IN conine numerele scrise alturat, se vor
afia valorile urmtoare: 3 4 5 6 34 (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a),
explicnd n ce const eficiena ei (3 4 rnduri). (4p.)
2 23 34 3
8 9 9 23
6 8 9 2
4 5 23 9

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {2,3,4} se genereaz n ordinea cresctoare a valorii, toate numerele
impare formate din trei cifre distincte. Astfel se obin n ordine, numerele: 243, 423.
Folosind aceeai metod se genereaz numerele pare formate din patru cifre distincte din
mulimea {2,3,4,5}. Care va fi al 5-lea numr generat? (4p.)
a.
3452
b.
3524
c.
2534
d.
3542

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului
f, stabilii ce valoare are f(123)? (6p.)

int f(int x)
{ if(x==0)return 0;
else
if(x%2==0)return 1+f(x/10);
else return 2+f(x/10);
}
3. Scriei n C/C++ definiia complet a subprogramului suma care are doi parametri:
- n, prin care primete un numr natural (1n100)
- v, prin care primete un tablou unidimensional cu n elemente, numere ntregi situate n
intervalul [10..30000]. Funcia returneaz suma numerelor din tabloul v care au ultimele
dou cifre identice. (10p.)
4. Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale
nenule mai mici sau egale dect 500, desprite prin cte un spaiu.
a) Scriei programul C/C++ care citete toate numerele din fiierul NUMERE.IN i creeaz
fiierul text NUMERE.OUT care s conin pe prima linie cel mai mare numr de dou cifre
din fiierul NUMERE.IN, i de cte ori apare el n acest fiier, iar pe a doua linie, cel mai mic
numr de dou cifre din fiierul NUMERE.IN i de cte ori apare el n acest fiier. Alegei o
metod de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a), explicnd n
ce const eficiena ei (3 4 rnduri). (4p.)

Exemplu: dac fiierul
NUMERE.IN are coninutul
alturat:
2 253 34 3
6 88 9 2 3
4 54 34 88
atunci fiierul NUMERE.OUT va
avea urmtorul coninut:
88 2
34 2


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {1,2,3} se genereaz, n ordinea cresctoare a valorii, toate numerele
formate din exact trei cifre, n care cifrele alturate au valori consecutive. Astfel se obin n
ordine, numerele: 121, 123, 212, 232, 321 i 323. Folosind aceeai metod se
genereaz numere de patru cifre din mulimea {1,2,3,4} care ndeplinesc aceeai
condiie. Care va fi al 5-lea numr generat ? (4p.)
a.
2121
b.
2123
c.
2121
d.
2323

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Pentru definiia alturat a subprogramului f,
stabilii ce valoare are f(123)? (6p.)
int f(int x)
{ if(x==0)return 0;
else
if(x%2==0)return 3+f(x/10);
else return 4+f(x/10);
}
3.
Scriei n C/C++ definiia complet a subprogramului suma care are doi parametri:
- n, prin care primete un numr natural (1n100)
- v, prin care primete un tablou unidimensional cu n elemente, fiecare element memornd
un numr cu exact trei cifre.
Funcia returneaz suma elementelor din tablou care au prima cifr egal cu ultima cifr.
(10p.)
4.
Fiierul text NUMERE.IN conine, pe fiecare linie, cte un ir de numere naturale nenule mai
mici sau egale dect 30000, desprite prin cte un spaiu; fiecare linie se termin cu
numarul 0 (care se consider c nu face parte din irul aflat pe linia respectiv).
a) Scriei programul C/C++ care afieaz pe ecran valoarea maxim din irul care conine
cele mai puine numere. n cazul n care exist mai multe iruri cu acelai numr minim de
numere, se va afia cea mai mare valoare care apare n unul dintre aceste iruri. Alegei o
metod de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare. (6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a), explicnd n
ce const eficiena ei (3 4 rnduri). (4p.)

Exemplu: dac fiierul NUMERE.IN are coninutul
alturat, atunci pe ecran se va afia numrul 253.
2 253 34 3 0
6 88 9 3 0
4 54 88 12345 98 234 546 0

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {2,3,4} se genereaz n ordinea cresctoare a valorii, toate numerele
pare formate din trei cifre distincte. Astfel se obin n ordine, numerele: 234, 324, 342,
432. Folosind aceeai metod se genereaz numerele impare formate din patru cifre
distincte din mulimea {2,3,4,5}. Care va fi al 5-lea numr generat? (4p.)
a.
3425
b.
2543
c.
4235
d.
3245

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Pentru definiia alturat a subprogramului f,
stabilii ce valoare are f(100)? (6p.)
int f(int x)
{ if(x==0)return 1;
else
return 1+f(x-1);
}
3.
Scriei programul C/C++ care citete de la tastatur un numr natural n (1n100) i
dou iruri de cte n numere ntregi cu cel mult 2 cifre fiecare: a1,a2,,an i
b1,b2,,bn. Programul afieaz pe ecran suma acelor numere impare din irul b care
sunt mai mici dect suma tuturor numerelor pare din irul a.
Exemplu: pentru n=4 i numerele 2,3,7,8 respectiv 44,3,1,8 se afieaz valoarea 4
pentru c numerele 3 i 1 sunt mai mici dect suma numerelor pare din irul a, care este
10. (10p.)
4.
Se consider subprogramul CMMMC care primete prin cei doi parametri x i y dou numere
naturale (1x10000, 1y10000) i returneaz cel mai mic multiplu comun al lor.
a) Scriei numai antetul subprogramului CMMMC. (4p.)
b) Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai
mici sau egale dect 10000, desprite printr-un spaiu. Scriei un program C/C++ care,
pentru fiecare linie k din fiierul NUMERE.IN, citete cele dou numere de pe aceast linie
i scrie n fiierul text NUMERE.OUT , tot pe linia k, cel mai mic multiplu comun al acestora,
ca n exemplu.
Se vor utiliza apeluri apeluri utile ale subprogramului CMMMC. (6p.)
Exemplu: dac fiierul
NUMERE.IN are coninutul
alturat:
12 14
11 12
4 8

atunci fiierul
NUMERE.OUT va avea
urmtorul coninut:
84
132
8


v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {1,2,3} se genereaz n ordinea cresctoare a valorii, toate numerele
impare formate din trei cifre distincte. Astfel se obin n ordine, numerele: 123, 213,
231, 321. Folosind aceeai metod se genereaz numerele impare formate din patru
cifre distincte din mulimea {1,2,3,4}. Care va fi al 5-lea numr generat ? (4p.)
a.
2413
b.
1423
c.
2431
d.
3241

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Pentru definiia alturat a subprogramului f,
scriei ce valoare are f(100). (6p.)

int f(int x)
{ if(x==50)return 1;
else
return 2+f(x-1);
}
3. Scriei programul C/C++ care citete de la tastatur un numr natural n (1n100) i
dou iruri de cte n numere ntregi cu cel mult 2 cifre a1,a2,,an i b1,b2,,bn.
Programul afieaz pe ecran suma acelor numere din irul b care sunt strict mai mici dect
media aritmetic a tuturor numerelor pare din irul a.
Exemplu: pentru n=4 i numerele 2,3,7,8 respectiv 44,3,1,8 se afieaz valoarea 4
pentru c numerele 3 i 1 sunt mai mici dect media aritmetic a numerelor pare din irul a,
care este 5. (10p.)
4. Se consider subprogramul CMMDC care primete prin cei doi parametri x i y dou numere
naturale (1x10000, 1y10000) i returneaz cel mai mare divizor comun al lor.
a) Scriei numai antetul subprogramului CMMDC. (4p.)
b) Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai
mici sau egale dect 10000, desprite printr-un spaiu, reprezentnd numitorul i
numrtorul cte unei fracii. Scriei un program C/C++ care, pentru fiecare linie k din
fiierul NUMERE.IN, citete numitorul i numrtorul fraciei pe aceast linie i scrie n
fiierul text NUMERE.OUT , tot pe linia k, numitorul i numitorul acestei fracii, adus la forma
ireductibil, ca n exemplu. Se vor utiliza apeluri apeluri utile ale subprogramului CMMDC.(6p.)
Exemplu: dac fiierul
NUMERE.IN are coninutul
alturat:
12 14
11 12
2 2
4 8
atunci fiierul
NUMERE.OUT va avea
urmtorul coninut:
6 7
11 12
1 1
1 2

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. La examenul de bacalaureat un elev primete un test format dintr-un subiect de tip I, unul
de tip II i unul de tip III. Stiind c pentru fiecare tip de subiect sunt elaborate exact 100
de variante, algoritmul de generare a tuturor posibilitilor de a forma un test este similar
cu algoritmul de generare a (4p.)
a. elementelor produsului cartezian b. aranjamentelor
c. permutrilor d. submulimilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce se afieaz la apelul f(4)?
(6p.)
void f(int n)
{
cout<<"*"; | printf("*");
if(n>2)
{
f(n-1);
cout<<"#"; | printf("#");
}
}
3. Scriei definiia complet a subprogramului numar, cu trei parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr nenul; subprogramul retuneaz numrul obinut prin
nlocuirea n numrul primit prin parametrul n a fiecrei apariii a cifrei c1 cu cifra c2. Dac
c1 nu apare n n, subprogramul returneaz valoarea n.
Exemplu: pentru a=12445, c1=4 i c2=7 valoarea returnat va fi 12775. (10p.)
4. Fiierul bac.txt conine cel mult 1000 de numere distincte, dintre care cel puin dou sunt
pare. Numerele sunt separate prin cte un spaiu i fiecare dintre ele are cel mult 9 cifre.
a) Scriei un program C/C++ care determin cele mai mari dou numere pare din fiier,
utiliznd un algoritm eficient din punct de vedere al timpului de executare i al spaiului de
memorie utilizat. Cele dou numere vor fi afiate pe ecran, n ordine descresctoare,
separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: 5123 8 6 12 3 se va afia: 12 8 (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Trei elevi vor s nfiineze o trup de rock format dintr-un chitarist solo, un basist i un
baterist. Toi trei tiu s cnte att la chitar solo, ct i la chitar bas, dar se pricep cu toii
i la baterie. Algoritmul de generare a tuturor posibilitilor de a forma trupa este similar cu
algoritmul de generare a (4p.)
a. aranjamentelor b. permutrilor
c. elementelor produsului cartezian d. submulimilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce se afieaz la apelul f(4)?
(6p.)
void f(int n)
{
if(n>0)
{
cout<<n; | printf(%d,n);
f(n-1);
cout<<n; | printf(%d,n);
}
}
3. Scriei definiia complet a subprogramului reduce, cu doi parametri, care primete prin
intermediul parametrilor a i b dou numere naturale formate din cel mult 9 cifre fiecare.
Funcia returneaz o valoare obinut din numrul a prin nsumarea acelor cifre diferite de 0
ale numrului a care NU divid numrul b. Dac nu exist asemenea cifre, se va returna
valoarea 0.
Exemplu: pentru a=184465709 i b=18, cifrele corespunztoare cerinei sunt 8, 4, 4, 5 i
7, deci valoarea returnat va fi 28 (28=8+4+4+5+7). Dac a=2402804 i b=8000,
valoarea returnat va fi 0. (10p.)
4. Fiierul bac.txt conine un ir de cel mult 2008 numere naturale, cu cel mult nou cifre
fiecare, pe mai multe rnduri, separate printr-un spaiu.
a) Scriei un program C/C++ care afieaz pe ecran cel mai mic numr din fiier la care
suma cifrelor pare este egal cu suma cifrelor impare, precum i numrul de apariii n fiier
ale acestui numr, folosind o metod eficient din punctul de vedere al timpului de
executare. Cele dou valori vor fi afiate pe o linie a ecranului, separate printr-un spaiu.
Exemplu: dac n fiier avem numerele 22031 9021 22031 1021 2011 10012 1021
457008 99882 atunci pe ecran se vor afia numerele: 1021 2. (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Ionel dorete s ofere cadouri membrilor familiei sale format din cei doi prini i o sor.
Decide s le ofere stilouri de diferite culori. La magazin exist stilouri de 5 nuane diferite.
Algoritmul de generare a tuturor posibilitilor de a atribui cte un stilou fiecruia dintre cei
trei membri ai familiei, fr s se repete vreo culoare, este similar cu algoritmul de
generare a (4p.)
a. aranjamentelor b. elementelor produsului cartezian
c. permutrilor d. submulimilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce valoare are f(4)?

(6p.)
int f(int n)
{
if (n==0) return 1;
else if (n==1) return 2;
else return f(n-1)-f(n-2);
}
3. Scriei definiia complet a subprogramului numar, cu patru parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr cu proprietatea c1<c2; subprogramul furnizeaz prin
intermediul celui de al patrulea parametru, x, o valoare obinut prin eliminarea din numrul
primit prin parametrul n a fiecrei cifre cuprinse n intervalul nchis [c1, c2]. Dac toate
cifrele lui n aparin acestui interval, valoarea furnizat prin x va fi 0.
Exemplu: pentru a=162448, c1=4 i c2=7 valoarea furnizat prin x va fi 128. (10p.)
4. Fiierul bac.txt conine cel mult 10000 de numere din intervalul nchis [0, 99], separate
prin spaiu, pe mai multe rnduri.
a) Scriei un program C/C++ care determin i afieaz pe ecran cel mai mare numr prim
care apare n fiier i numrul de apariii ale acestuia, utiliznd un algoritm eficient din punct
de vedere al timpului de executare i al spaiului de memorie utilizat. Programul afieaz pe
ecran cele dou valori determinate separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: 5 8 99 5 1 1 2 2 se va afia 5 2. (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. O clas format din 28 de elevi dorete s trimit la consftuirea reprezentanilor claselor
colii o delegaie format din 3 elevi. Algoritmul de generare a tuturor posibilitilor de a
forma o delegaie este similar cu algoritmul de generare a (4p.)
a. permutrilor b. aranjamentelor
c. combinrilor d. submulimilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider subprogramul f, definit
alturat. Ce valoare are f(4)?
(6p.)
long f(int n)
{
if (n==0) return 0;
else return n*n+f(n-1);
}
3. Scriei definiia complet a subprogramului numar, cu trei parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr nenul. Subprogramul caut prima apariie a cifrei c1 n
n, i dac aceasta apare, o nlocuiete cu c2, iar urmtoarele cifre, dac exist, sunt
nlocuite cu cte o cifr 0. Subprogramul furnizeaz tot prin n numrul astfel obinut. Dac
cifra c1 nu apare n n, atunci valoarea lui n rmne nemodificat.
Exemplu: pentru a=162448, c1=4 i c2=7 valoarea furnizat prin n va fi 162700. (10p.)
4. Fiierul bac.txt conine pe mai multe rnduri cel mult 50000 de numere din intervalul
nchis [0, 99], separate prin cte un spaiu.
a) Scriei un program C/C++ care afieaz pe ecran n ordine descresctoare acele
numere din fiier care sunt mai mari dect un numr natural k, citit de la tastatur, utiliznd
un algoritm eficient din punct de vedere al timpului de executare. Dac un numr apare de
mai multe ori, i este mai mare dect k, se va afia o singur dat. Numerele vor fi afiate
cte 20 pe fiecare linie (cu excepia ultimei linii care poate s conin mai puine valori),
separate prin cte un spaiu.
Exemplu: dac fiierul conine numerele: 15 8 99 15 1 37 1 24 2, iar pentru k se citete
valoarea 7, se vor afia numerele 99 37 24 15 8. (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. La un bal mascat magazia colii pune la dispoziia elevilor 10 pelerine, 10 mti i 10
plrii. Algoritmul de generare a tuturor posibilitilor de a forma un costum format dintr-o
plrie, o masc i o pelerin este similar cu algoritmul de generare a (4p.)
a. elementelor produsului cartezian b. aranjamentelor
c. permutrilor d. submulimilor

Scriei pe foaia de examen rspunsul la urmtoarea ntrebare:
2. Se consider subprogramul f, definit
alturat. Ce se afieaz la apelul
f('a')?
(6p.)
void f(char c)
{
if (c != 'e')
{
f(c+1);
cout<<c; | printf(%c,c);
}
}
3. Scriei definiia complet a funciei f care primete prin intermediul parametrului n un numr
natural nenul (2n200) iar prin intermediul parametrului a, un tablou unidimensional care
conine n valori ntregi, fiecare dintre aceste valori ntregi avnd cel mult patru cifre. Funcia
returneaz valoarea 1 dac elementele tabloului formeaz un ir cresctor, valoarea 2 dac
elementele tabloului formeaz un ir descresctor, valoarea 0 dac elementele tabloului
formeaz un ir constant i valoarea -1 n rest. (10p.)
4. Fiierul bac.txt conine pe mai multe rnduri cel mult 1000 de numere ntregi separate
prin spaiu, ntre care exist cel puin dou numere pozitive, neseparate de alt numr.
Fiecare numr are cel mult 9 cifre.
a) Scriei un program C/C++ care determin cele mai mari dou numere pozitive, aflate
unul dup altul n fiier, a cror sum este maxim, utiliznd un algoritm eficient din punct
de vedere al timpului de executare i al spaiului de memorie utilizat. Dac exist mai multe
soluii, s se rein doar aceea pereche pentru care diferena dintre cele dou numere este
maxim. Numerele vor fi afiate pe ecran n ordine descresctoare, separate printr-un
spaiu.
Exemplu: dac fiierul conine numerele: -2 11 4 16 -1 25 -2 8 12 0 10 10 se vor afia
numerele 16 4, n aceast ordine, cu un spaiu ntre ele. (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Pentru a planifica n orarul unei coli, la clasa a XII-a, 4 ore de informatic n zile lucrtoare
diferite din sptmn, cte o singur or pe zi, se poate utiliza un algoritm de generare
echivalent cu algoritmul de? (4p.)
a. generare a permutrilor de 4 elemente b. generare a aranjamentelor de 4 elemente
luate cte 5
c. generare a aranjamentelor de 5
elemente luate cte 4
d. generare a combinrilor de 5 elemente
luate cte 4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Subprogramul recursiv alturat
este definit incomplet. Scriei
expresia care poate nlocui
punctele de suspensie astfel
nct, n urma apelului, f(12) s
se afieze irul de valori:
12 6 3 1 1 3 6 13. (6p.)
void f(int i)
{ if (. . .)
{ printf(%d ,i); | cout<<i<< ;
f(i/2);
printf(%d ,i); | cout<<i<< ;
}
}
3. Subprogramul par primete prin singurul su parametru, n, un numr natural nenul cu cel
mult 4 cifre i returneaz valoarea 1 dac n conine cel puin o cifr par, sau returneaz
valoarea 0 n caz contrar.
Exemplu: pentru n=723 subprogramul va returna valoarea 1.
a) Scriei numai antetul subprogramului par. (2p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural nenul n cu cel
mult 9 cifre, apoi un ir de n numere naturale, cu exact 8 cifre fiecare, i afieaz pe ecran,
numrul de valori din irul citit care au cel puin o cifr par printre primele 4 poziii,
considerate de la stnga spre dreapta. Se vor utiliza apeluri utile ale subprogramului par.
Exemplu: dac n=3, iar irul citit este 12386406, 37152073, 73543157 se va afia 2
(numerele 12386406 i 73543157 respect condiia cerut). (8p.)
Fiierul numere.in conine cel mult 5000 de numere reale, cte unul pe fiecare linie. Se
cere s se scrie un program care s citesc toate numerele din fiier i s afieze pe ecran
numrul de ordine al primei, respectiv al ultimei linii pe care se afl cel mai mare numr din
fiier. Cele dou numere vor fi separate printr-un spaiu. Alegei o metod de rezolvare
eficient din punct de vedere al spaiului de memorare i al timpului de executare.
4.
Exemplu: dac fiierul are coninutul alturat, pe ecran se vor afia numerele 2 6.
a) Descriei succint, n limbaj natural, metoda de rezolvare aleas, explicnd n ce
const eficiena ei. (4p.)
b) Scriei programul C/C++ corespunztor metodei descrise. (6p.)
3.5
7
-4
7
2
7
6.3
5

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Avnd la dispoziie cifrele 0, 1 i 2 se pot genera, n ordine cresctoare, numere care au
suma cifrelor egal cu 2. Astfel, primele 6 soluii sunt 2, 11, 20, 101, 110, 200. Folosind
acelai algoritm, se genereaz numere cu cifrele 0, 1, 2 i 3 care au suma cifrelor egal
cu 4. Care va fi al 7-lea numr din aceast generare? (4p.)
a.
130
b.
301
c.
220
d.
103

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se consider definit subprogramul f.
a) Ce se va afia n urma apelului
f(14)?
b) Scriei valorile pe care le poate avea x,
astfel nct n urma apelului f(x), s se
afieze pe ecran exact 10 numere.
(6p.)
void f(int x)
{
if (x<=10)
cout<<0<< ; | printf("%d ",0);
else
{ f(x-2);
cout<<x<< ; | printf("%d ",x);
}
}
3. Subprogramul ordonare primete prin parametrul x un tablou unidimensional cu cel mult
100 de elemente numere reale, iar prin parametrul n, un numr ntreg ce reprezint
dimensiunea tabloului x. Subprogramul ordoneaz cresctor elementele tabloului i
furnizeaz tabloul ordonat tot prin parametrul x.
a) Scriei numai antetul acestui subprogram. (4p.)
b) Scriei un program C/C++ care citete de la tastatur dou numere naturale, n i m
(1n100 i mn) i apoi un ir de n numere reale distincte. Folosind apeluri utile ale
subprogramului ordonare, programul afieaz pe prima linie a ecranului, cele mai mari m
elemente din irul citit (n ordine cresctoare a valorilor lor), iar pe a doua linie de ecran,
cele mai mici m elemente din ir (n ordine descresctoare a valorilor lor). Numerele afiate
pe aceeai linie vor fi separate prin cte un spaiu. (10p.)
Exemplu : dac n=9, m=3, iar irul este (14.2, 60, -7.5, -22, 33.8, 80, 4, 10, 3) se va
afia pe ecran:
33.8 60 80
3 -7.5 -22
4. Scriei un program C/C++ care scrie n fiierul text SIR.TXT toate irurile formate din dou
caractere distincte, litere mari ale alfabetului englez. Fiecare ir va fi scris pe o linie a
fiierului. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. n cte dintre permutrile elementelor mulimii {I,N,F,O} vocala I apare pe
prima poziie? (4p.)
a.
1
b.
24
c.
6
d.
12

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul f este definit
alturat.
Ce se afieaz ca urmare a
apelului de mai jos?
f(1,4);
(6p.)
void f (int x,int y)
{ if (x<y){x=x+1;f(x,y);
y=y-1;f(x,y);
}
else
cout<<x<<y; | printf(%d%d,x,y);
}
3. Scriei programul C/C++ care citete de la tastatur un numr natural n impar i
construiete n memorie un tablou unidimensional A=(A
1
, A
2
,, A
n
) cu elementele
mulimii {1,2,...,n} astfel nct elementele de pe poziii impare formeaz irul cresctor
1,2,...,[(n+1)/2] iar elementele de pe poziii pare irul descresctor n,n-1,...,
[(n+1)/2]+1.

Exemplu: pentru n=11 se va construi tabloul A :


Elementele tabloului se afieaz pe un rnd, separate prin cte un spaiu. (6p.)
4. a) Scriei definiia complet a subprogramului dcp, cu doi parametri, care:
- primete prin parametrii a i b dou valori naturale din intervalul [1;30000]
- returneaz o valoare natural reprezentnd cel mai mare numr care este att divizor al lui a
ct i divizor al lui b i care se scrie ca un produs de doi factori primi diferii, sau valoarea 1
dac nu exist un astfel de divizor.
Exemplu: dac a=100 i b=120, subprogramul returneaz valoarea 10. (4p.)
b) Fiierul NUMERE.IN conine pe prima linie un numr natural nenul n(1n100) i pe
urmtoarea linie n numere naturale din intervalul [1;30000], separate prin cte un spaiu.
Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n, i
determin, folosind apeluri ale subprogramului dcp, cel mai mare numr care este divizor al
fiecruia dintre cele n numere situate pe linia a doua n fiier i are proprietatea c este un
produs de dou numere prime distincte. Programul afieaz numrul cu proprietatea cerut,
iar dac nu exist un astfel de numr afieaz mesajul nu exista.
Exemplu: dac fiierul NUMERE.IN are coninutul:
5
60 72 600 24 48 atunci se afieaz 6. (10p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Un elev realizeaz un program care citete o valoare natural pentru o variabil
n i apoi afieaz n fiierul permut.txt, pe prima linie, valoarea lui n, apoi
toate permutrile mulimii {1,2,...,n}, cte o permutare pe cte o linie a
fiierului. Rulnd programul pentru n=3, coninutul fiierului este cel alturat.
Dac va rula din nou programul i va introduce pentru variabila n valoarea 5,
cte linii va conine fiierul? (4p.)
3
3 2 1
3 1 2
2 3 1
2 1 3
1 3 2
1 2 3
a.
25
b.
24
c.
121
d.
721

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Funcia f este astfel definit nct f(1)=8, iar f(n+1)=2*f(n)-4 (n natural, n>1).
a) Ce valoare are f(5) ? (3p.)
b) Care este cea mai mare valoare pe care o poate lua x astfel nct f(x) < 1000 ? (3p.)
3. Funcia verif primete, prin intermediul parametrului a, un numr natural, format din cel
mult 9 cifre, i prin intermediul parametrului n, un numr natural nenul (2n9). Funcia
returneaz valoarea 1 dac a este un numr format din n cifre distincte, iar fiecare dintre
aceste cifre aparine intervalului nchis [1,n] i valoarea 0 n caz contrar. Scriei definiia
complet a funciei verif. (10p.)
4. Fiierul text permut.txt conine pe prima linie o valoare natural n (0<n9), iar pe fiecare
dintre urmtoarele linii cte un numr natural format din exact n cifre nenule distincte, cifre
care aparin mulimii {1,2,...,n}. Fiierul conine n ordine strict descresctoare, toate
numerele care ndeplinesc aceste proprieti,
Scriei un program eficient att din punctul de vedere al vitezei de executare ct i al
spaiului de memorie utilizat care citete de la tastatur un numr natural nenul, x, i
verific, utiliznd apeluri utile ale subprogramului verif, dac x apare printre numerele
scrise, ncepnd cu a doua linie, n fiierul permut.txt. n caz afirmativ, programul va afia
pe ecran mesajul Apare pe linia urmat de numrul liniei n care apare valoarea x (se
consider ca prima linie din fiier are numrul 1). n cazul n care x nu apare printre
numerele din fiier, programul va afia pe ecran mesajul Nu apare.

Exemplu: dac fiierul permut.txt are coninutul alturat, iar de la tastatur se
citete valoarea 213, programul va afia urmtoarele: Apare pe linia 5
Dac pentru acelai coninut al fiierului, de la tastatur se citete oricare dintre
valorile 211, 243, 12 sau 301 programul va afia mesajul Nu apare
a) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce
const eficiena ei (3 4 rnduri). (4p.)
b) Scriei un program C/C++ care rezolv problema conform metodei descrise.
(6p.)
3
321
312
231
213
132
123



v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Un program citete o valoare natural nenul pentru n i apoi genereaz i afieaz n
ordine cresctoare lexicografic toate combinaiile formate din n cifre care aparin mulimii
{0,1}. Astfel, pentru n=2, combinaiile sunt afiate n urmtoarea ordine: 00, 01, 10, 11.
Dac se ruleaz acest program i se citete pentru n valoarea 9, imediat dup combinaia
011011011 va fi afiat combinaia: (4p.)
a.
011100100
b.
011011100
c.
011011011
d.
011100000

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Funcia f are definiia alturat. Scriei cinci valori
de apel pe care le poate avea n astfel nct,
pentru cele 5 apeluri corespunztoare acestor
valori, s se obin 5 valori ale funciei, disticte
dou cte dou. (6p.)
int f(int n)
{
if (n<=9) return 0;
if (n%5==0) return 0;
return 1+f(n-3);
}
3. Funcia f primete prin intermediul parametrului n un numr natural nenul (2n200), iar
prin intermediul parametrului a, un tablou unidimensional care conine n valori ntregi
(fiecare dintre aceste valori ntregi avnd cel mult patru cifre).
Funcia returneaz valoarea -1 dac numrul de valori strict negative din tabloul a este
strict mai mare dect numrul de valori strict pozitive din tablou, valoarea 0 dac numrul de
valori strict negative din a este egal cu numrul de valori strict pozitive din tablou i valoarea
1 dac numrul de valori strict pozitive din tabloul a este strict mai mare dect numrul de
valori strict negative din a. Scriei definiia complet a funciei f. (10p.)
4. a) Scriei un program C/C++ care citete de la tastatur un numr natural nenul, S, i printr-
o metod eficient din punct de vedere al timpului de executare, determin i afieaz pe
ecran trei valori naturale a cror sum este egal cu S, i al cror produs este maxim. Cele
trei valori vor fi scrise n ordine cresctoare pe prima linie a fiierului rez.dat, separate
prin cte un spaiu.
Exemplu: dac se citete valoarea 5, fiierul rez.dat va avea o linie cu coninutul 1 2 2.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri). (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Un program citete o valoare natural nenul pentru n i apoi genereaz i afieaz, n
ordine descresctoare lexicografic, toate combinaiile de n cifre care aparin mulimii
{0,1}. Astfel, pentru n=2, combinaiile sunt afiate n urmtoarea ordine: 11, 10, 01, 00.
Dac se ruleaz acest program i se citete pentru n valoarea 8, imediat dup combinaia
10101000 va fi afiat combinaia: (4p.)
a.
01010111
b.
10100111
c.
01010100
d.
10100100

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Funcia f are definiia alturat. Scriei 4 valori de
apel pe care le poate avea n astfel nct, pentru
cele 4 apeluri, corespunztoare acestor valori, s
se obin 4 valori, disticte dou cte dou. (6p.)
int f(int n)
{if (n<=9) return 0;
if (n%4==0) return 0;
return 1+f(n-3);
}
3. Funcia verif primete prin intermediul a trei parametri, notai a, b i c trei valori naturale
nenule, fiecare de maximum patru cifre. Funcia returneaz valoarea 1 dac cele trei valori
pot constitui laturile unui triunghi i valoarea 0 n caz contrar.
a) Scriei definiia complet a funciei verif.
b) Scriei un program C/C++ care citete de la tastatur ase valori naturale nenule, apoi
verific, utiliznd apeluri utile ale funciei verif, dac primele trei numere citite pot constitui
laturile unui triunghi i dac ultimele trei numere citite pot constitui laturile unui triunghi; n
caz afirmativ, programul afieaz pe ecran mesajul congruente dac cele dou triunghiuri
sunt congruente sau mesajul necongruente dac cele dou triunghiuri nu sunt
congruente; dac cel puin unul dintre cele dou triplete de valori nu pot constitui laturile
unui triunghi, programul va afia pe ecran mesajul nu. (10p.)
Fiierul BAC.DAT conine pe prima linie, separate printr-un spaiu, dou valori naturale n i m
(2n1000, 2m1000), pe a doua linie n valori ntregi i pe a treia linie m valori ntregi.
Valorile de pe a doua i de pe a treia linie apar n fiier n ordine strict cresctoare, sunt
separate prin cte un spaiu i au cel mult 4 cifre fiecare.
Se cere afiarea pe ecran a dou valori, dintre cele aflate n poziii consecutive pe a treia
linie a fiierului, care determin intervalul nchis n care se afl un numr maxim de valori de
pe a doua linie a fiierului. Se va utiliza o metod eficient din punct de vedere al timpului de
executare i al spaiului de memorie utilizat.
Exemplu: dac fiierul BAC.DAT are coninutul
alturat, programul va afia: 1 9
10 4
-1 1 3 4 5 6 10 15 16 117
0 1 9 20
Explicaie: cele patru numere de pe a treia linie a fiierului determin trei intervale:
[0,1], [1,9], [9,20]; n intervalul [1,9] se afl 5 valori de pe a doua linie a fiierului,
acesta fiind numrul maxim de valori aflate n unul dintre cele trei intervale.
4.
a) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri) (4p.)
b) Scriei un program C/C++ care s rezolve problema conform metodei descrise. (6p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Subprogramul recursiv alturat este definit incomplet:
Care dintre urmtoarele expresii poate nlocui punctele
de suspensie astfel nct, n urma apelului,
subprogramul f s returneze suma primelor dou cifre
ale numrului primit prin intermediul parametrului x.
Exemplu: n urma apelului f(2318) valoarea returnat
este 5. (4p.)
int f(int x){
if (...)
return x%10 + x/10;
else
return f(x/10);
}

a.
x<=100
b.
x<=99
c.
x==99
d.
x!=0

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se genereaz, utiliznd metoda bactracking, cuvintele cu exact 3 litere din mulimea
{a,x,c,f,g}. Dac primele patru cuvinte generate sunt, n ordine, aaa, aax, aac, aaf,
scriei ultimele trei cuvinte care ncep cu litera a, n ordinea n care vor fi generate. (6p.)
3. Tabloul unidimensional V, declarat global, memoreaz exact 50 de numere ntregi:
V
1
, V
2
,...,V
50
.
Subprogramul Calcul primete prin intermediul parametrului, k un numr natural nenul
(k50) i furnizeaz prin intermediul parametrului S suma tuturor elementelor pozitive, din
tabloul V, cu indici mai mari sau egali cu k.
a) Scriei doar antetul subprogramului Calcul. (2p.)
b) Scriei un program n limbajul C/C++ care citete de la tastatur cele 50 de componente
ntregi ale tabloului V i dou numere naturale nenule x i y (x<y50). Programul afieaz
suma elementelor pozitive din tablou, cu indici cuprini ntre x i y inclusiv, folosind apeluri
utile la subprogramul Calcul. (8p.)
4. Pe prima linie a fiierului text DATE.TXT se gsete o valoare natural k (k1000000).
a) Scriei un program C/C++ care citete din fiierul DATE.TXT valoarea k i afieaz, pe
ecran, toate perechile de numere naturale nenule x, y (xy) cu proprietatea c x
2
+y
2
=k.
Fiecare pereche va fi afiat pe cte o linie, numerele fiind desprite printr-un spaiu.
Alegei o metod de rezolvare eficient din punctul de vedere al timpului de executare.

Exemplu: dac fiierul DATE.TXT conine numrul 1000000, pe ecran
se vor afia, nu neaprat n aceast ordine, perechile alturate. (6p.)
280 960
352 936
600 800
b) Descriei succint, n limbaj natural, metoda utilizat, justificnd eficiena acesteia (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se consider subprogramul recursiv
alturat, definit incomplet.
Cu ce valoare trebuie nlocuite punctele de
suspensie, pentru ca funcia s returneze
cifra minim a numrului natural nenul
transmis prin intermediul parametrului x?
(4p.)
int Min(int x){
int c;
if (x==0) return ...;
else {
c=Min(x/10);
if (c < x%10) return c;
else return x%10;
}
}
a.
-1
b.
1
c.
9
d.
0

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Utiliznd metoda backtracking se genereaz toate submuimile mulimii {3,6,2,5}.
Primele ase submulimii generate sunt, n ordine: {3}, {3,6}, {3,6,2}, {3,6,2,5},
{3,6,5}, {3,2}. Care sunt, n ordinea obinerii, ultimele trei submulimi, generate dup
aceast regul? (6p.)
3. Scriei n limbajul C/C++ definiia complet a subprogramului numar, cu exact doi parametri,
care primete prin intermediul parametrului x un numr natural de cel mult 2 cifre, i prin
intermediul parametrului y un numr natural nenul de cel mult 9 cifre. Subprogramul
returneaz cel mai mare numr natural z pentru care exist un numr natural k astfel nct
z=x
k
i z<y.
Exemplu: pentru y=18 i x=2 subprogramul va returna valoarea 16(=2
4
<18). (10p.)
4. Pe prima linie a fiierului text DATE.TXT se afl dou numere naturale nenule n i m
(n3000, m3000), pe a doua linie un ir de n numere naturale, ordonate cresctor, avnd
fiecare cel mult 9 cifre, iar pe linia a treia un ir de m numere naturale, ordonate
descresctor, avnd fiecare cel mult 9 cifre. Numerele sunt desprite, n cadrul liniilor, prin
cte un spaiu.
a) Scriei programul C/C++ care citete numerele din fiier i afieaz, pe ecran, doar
numerele pare din cele dou iruri, ordonate cresctor. Alegei o metod de rezolvare
eficient ca timp de executare.
Exemplu: dac fiierul are coninutul alturat, pe ecran se
va afia: 2 4 4 32 42 42 88 88 (6p.)
b) Descriei succint, n limbaj natural, metoda utilizat,
justificnd eficiena acesteia. (4p.)
5 8
2 4 7 37 42
88 88 67 45 42 32 4 1




v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar
INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Se consider subprogramul recursiv alturat, S,
definit incomplet.
Cu ce expresie pot fi nlocuite punctele de
suspensie astfel nct, n urma apelului S(2), s se
afieze 3 caractere * ? (4p.)
void S(int x)
{ cout<<'*';
if (...) {
cout<<'*';
S(x-1);
}
}
a.
x>1
b.
x>2
c.
x>=3
d.
x>0

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2. Se utilizeaz metoda backtracking pentru a genera toate cuvintele formate din dou litere
distincte din muimea {w,x,z,y} astfel nct nici un cuvnt s nu nceap cu litera x i nici
un cuvnt s nu conin litera w lng litera z. Cuvintele vor fi generate n ordinea wx, wy,
zx, zy, yw, yx, yz. Folosind aceeai metod se genereaz toate cuvintele de dou litere
distincte din mulimea {w,x,z,y,t} astfel nct nici un cuvnt s nu nceap cu litera x i
nici un cuvnt s nu conin litera w lng litera z. Care este a treia i a patra soluie
generat? (6p.)
3. Subprogramul Nr are un singur parametru, k, prin intermediul cruia primete un numr
natural de cel puin 3 cifre i cel mult 9 cifre, cu toate cifrele nenule. Subprogramul
furnizeaz tot prin intermediul parametrului k, valoarea obinut prin eliminarea primei i
ultimei cifre a numrului transmis la apel.
Exemplu: dac subprogramul primete prin intermediul parametrului k valoarea 12438, n
urma apelului subprogramului Nr, k va primi valoarea 243.
Scriei, n limbajul C/C++, definiia complet a subprogramului Nr. (10p.)
4. Pe prima linie a fiierului text DATE.TXT se afl un ir de cel mult 10000 de numere ntregi,
avnd cel mult 4 cifre fiecare. Numerele sunt desprite prin cte un spaiu.
a) Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran lungimea
maxim a unei secvene de numere din ir, cu proprietatea c oricare dou numere din
secven, aflate pe poziii consecutive, au pariti diferite. Pe a doua linie a ecranului,
programul va afia o secven de lungime maxim, valorile fiind desprite prin cte un
spaiu. Alegei o metod de rezolvare eficient ca timp de executare.
Exemplu: dac fiierul conine, n ordine, numerele 2 4 3 2 7 4 6 2 7 8 12, se va
afia:
5
4 3 2 7 4 (6p.)
b) Descriei succint, n limbaj natural, metoda utilizat, justificnd eficiena acesteia. (4p.)

v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com
Ministerul Educaiei, Cercetrii i Tineretului Centrul Naional pentru Curriculum i Evaluare n
nvmntul Preuniversitar

INFORMATIC, limbajul C/C++ Subiectul III
Specializarea Matematic-informatic intensiv informatic
Subiectul III (30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Aplicnd metoda backtracking pentru a genera toate permutrile celor n elemente ale unei
mulimi, o soluie se memoreaz sub forma unui tablou unidimensional x
1
,x
2
,,x
n
. Dac
sunt deja generate valori pentru componentele x
1
,x
2
,,x
k-1
, iar pentru componenta
curent, x
k
(1<k<n), a fost gsit o valoare convenabil, atunci se ncearc alegerea (4p.)
a. unei noi valori pentru componenta x
k-1
b. unei valori pentru componenta x
k+1

c. unei noi valori pentru componenta x
k
d. unei noi valori pentru componenta x
1


Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Ce afieaz subprogramul F, descris
alturat, la apelul F(5)? (6p.)
void F(int x)
{
cout<<x; | printf(%d,x);
if(x>=3)
F(x-2);
cout<<x-1; | printf(%d,x-1);
}
3. Scriei definiia complet a subprogramului divizor, cu trei parametri, prin care primete 3
numere naturale cu cel mult 9 cifre fiecare i returneaz numrul divizorilor comuni tuturor
celor 3 numere.
Exemplu: dac numerele primite ca parametri sunt 24, 20 i 12 subprogramul returneaz
valoarea 3 (divizorii comuni sunt 1, 2 i 4). (10p.)
Se consider un ir s format dup regula alturat, unde
s-a notat cu ab numrul obinut prin concatenarea
cifrelor lui a i b, n aceast ordine.
Exemplu: pentru x=2 se obine irul:
2, 3, 32, 323, 32332,....

Fiierul text SIR.TXT conine pe prima linie dou numere, x (1x20) i k (1k5000),
separate printr-un spaiu, iar pe a doua linie un numr format din exact k cifre, reprezentnd
un termen al irului s (diferit de x). Cifrele numrului nu sunt separate prin spaii.
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al memoriei utilizate, afieaz pe ecran acel termen din ir care l
precede pe cel citit din fiier.
Exemplu: dac fiierul conine valorile alturate, se va afia pe ecran
numrul 323. (6p.)
2 5
32332
4.
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei. (4p.)



v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
v
a
r
i
a
n
t
e
b
a
c
a
l
a
u
r
e
a
t
.
c
o
m
variantebacalaureat.com
variantebacalaureat.com

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