Sunteți pe pagina 1din 5

Grile – Academie

1. Pentru a scrie valoarea 9 ca sumă de numere prime se folosește metoda backtracking și


se generează, în această ordine, sumele distincte: 2+2+2+3, 2+2+5, 2+7, 3+3+3.
Folosind exact aceeași metodă, se scrie valoarea 10 ca sumă de numere prime. Care sunt
ultimele trei soluµii, în ordinea generării lor?
a) 2+2+2+2+2, 2+2+3+3, 2+3+5
b) 2+2+3+3, 2+3+5, 3+7
c) 2+2+2+2+2, 3+7, 5+5
d) 2+3+5, 3+7, 5+5
2. Se consideră subprogamul F definit mai jos. Ce se va afișa în urma apelului F(3, 7)?
int F(int x, int y)
{
if(x==y || x==0)
return 1;
else
{
y--;
return F(x, y)+ F(x-1, y);
}
}
a)20 b)56 c)35 d)42
3. Care este complexitatea de timp a secvenței de mai jos?
int i, j, k ;
for(i=1; i<=n; i++)
{
k=i;
for(j=1; j<=k; j++)
{
k=k/2 ;
}
}
a)O(n*log(n)) b)O(log(n)) c)O(log(n!)) d)O(n2)
4. Fie G = (V, A) un graf complet cu n vârfuri. Care este numărul maxim de muchii care pot
eliminate pentru a rămâne graf cu propriteatea că există un ciclu elementar care conține
toate vârfurile?
a)n(n-1)/2 - n b)n c)n(n-1)/4 d)n(n-2)/2
5. Se consideră următorul subprogram:
void f(int n)
{
int i;
if(n>0)
for(i=1;i<=n;i++)
{ f(n-2);
cout<<i<<' ';
}
}
Valoarea lui n pentru care sunt afișate valorile 1 1 1 2 1 3 la apelul f(n) este:
a) 12 b) 9 c) 6 d) 3
6. Un arbore binar este un arbore cu rădăcină în care fiecare nod are cel mult 2 descendenţi
direcţi (fii). Un arbore binar complet, cu h niveluri, are un număr de noduri egal cu:
a) 2h b) 2h+1 c) 2h-1 d) 2h-1
7. Se consideră următoarea secvenţă de program:
int a,b;
void f(int x,int &y)
{
int b=x;
y+=b;
x=y;
}
int main()
{
a=20;
b=23;
f(a,b);
cout<<a<<' '<<b;
return 0;}
În urma executării secvenței de program de mai sus se afişează:
a) 20 43 b) 23 23 c) 20 23 d) 23 43
8. În vederea sortării crescătoare a unui șir de valori întregi, folosind metoda bulelor (bubble
sort), un program citește valorile următoare 2,40,17,1,51,34,20,63 și le memorează într-
un tablou unidimensional. După câte parcurgeri ale șirului, valoarea 40 ajunge pe locul
final în tabloul unidimensional sortat crescător?
a) 2 b) 1 c) 3 d) 0
9. Se consideră subprogramul f de mai jos.
int f(int x)
{
int d=2, r=x;
while(x>1)
{
if(x%d==0)
{
r=r/d*(d-1);
while(x%d==0)
x/=d;
}
d++;
if(d*d>x)
d=x;
}
return r;
}
Pentru câte numere mai mici sau egale cu 25 funcția returnează valoarea 6?
a) 2 b)3 c)4 d)5
10. Se consideră secvența de instrucțiuni descrisă mai jos.
char s[21]="InfoRmaTICa", *p;
p=strstr(s,"ma");
if(p!=0)
{
if(p[0]>='A' && p[0]<='Z')
p[0]=p[0]+32;
else
p[0]++;
cout<<p<<' '<<s<<' '<<p-s;
}
else
cout<<"nu exista";
Valorile afișate pe ecran în urma executării secvenței sunt:
a) nu exista
b) naTICa InfoRmaTICa 5
c) maTICa InfoRmaTICa 4
d) naTICa InfoRnaTICa 5
11. Câte grafuri bipartite complete cu n noduri se pot genera ?
2
a)𝐶𝑛2 b) 𝐶𝑛−1 c)2n-1 d)2n-1 – 1
12. Se foloseşte metoda backtracking pentru a genera submulţimile mulţimii {1, 3, 5, 7, 9}.
Câte soluţii care obligatoriu conţin elementul 3 şi nu conţin elementul 7 s-au generat?
a)8 b)2 c)16 d)4
13. Se consideră următoarea secvenţă de cod, în care variabila i este de tip întreg şi variabila
s poate memora un şir de cel mult 20 de caractere:
strcpy(s, "caiete") ;
for(i=0;i<strlen(s); i++)
if(strchr("aeiou", s[i]))
strcpy(s+i,s+i+1);
printf("%s",s);
Care este şirul afişat în urma executării secvenţei de cod?
a)ct b)cite c)cit d)ete
14. Se cunosc următoarele informaţii despre matricea de adiacenţă a unui graf neorientat: are
10 linii, are exact 24 de valori nenule şi suma elementelor pe fiecare coloană este mai
mare sau egală cu 2. Care este valoarea maximă pe care o poate avea gradul unui nod
într-un astfel de graf?
a)6 b)nu există un astfel de graf c)9 d)8
15. În următoarea secvență de cod, x este o variabilă care memorează un număr întreg, st, dr,
mijl și gasit sunt variabile de tip întreg, iar v este un vector cu 20 elemente numere
întregi, primul element fiind pe poziția 1. Vectorul v are elementele ordonate crescător.
Secvența de cod caută numărul memorat în x în vectorul v, folosind metoda căutării
binare.
st=1; dr=20;gasit=0;
while((st<=dr) && (gasit==0))
{
mijl=(st+dr)/2;
printf(“%d “, v[mijl]);
if(v[mijl]==x) gasit=mijl;
else
if(v[mijl]>x) dr=mijl-1;
else st=mijl+1;
}
Care dintre următoarele variante nu poate fi rezultatul afişat de această secvenţă de cod?
a) 10 20 30 b) 10 15 20 16 18 c) 10 25 17 d) 11 25 10
16. În urma executării secvenței de instrucțiuni de mai jos suma elementelor pare ale matricei
a, cu 5 linii și 5 coloane numerotate de la 0 la 4 va fi:
n = 5;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
a[i][j] = i - j + n;
}
}
a)12 b)20 c)60 d)64
17. Apelul s(3) al subprogramului s definit mai jos va afișa pe ecran:
void s(int n)
{
int i;
if (n > 0)
{
for (i = 0; i < n; i++)
{
printf("%d", i);
s(i - 1);
}
printf("%d", n);
}
}
a) 00120013 b)012013 c)012301 d)012031
18. Numărul de elemente nule ale matricei de adiacență asociată unui arbore cu n noduri
este:
a)n2-n-2 b)n*(n-1)/2 c)n2-2n+2 d)n*(n-1)+n
19. Se consideră algoritmul care determină toate permutările distincte de n obiecte
(numerotate de la 1 la n), în care pe orice poziţie de rang par se află o valoare pară. De
exemplu, pentru n=5, primele trei permutări generate în ordine lexicografică sunt:
(1,2,3,4,5), (1,2,5,4,3), (1,4,3,2,5). Pentru n=4, numărul total de astfel de permutări este:
a)8 b)4 c)6 d)2
20. Se consideră un graf neorientat cu 3675 de noduri și 10589 muchii. Gradul maxim pe
care îl poate avea un nod din reprezentarea grafului ce conține un număr maxim de
noduri izolate este:
a) 145 b) 146 c) 147 d) 148

Răspunsuri
1.d 2.c 3.c 4.a 5.d 6.d 7.a 8.a 9.c 10.d 11.d 12.a 13.c 14.a 15.d 16.c 17.b

18.c 19.b 20.b

11 – Explicații - Un graf bipartit complet este unic determinat de o partiție a lui V n doua submulțimi V1
și V2, disjuncte și nevide. A determina toate grafurile bipartit complete, înseamnă a determina în câte
moduri se pot construi mulțimile V1 și V2. Pentru aceasta procedăm astfel:
În mulțimea V1 se pune nodul 1, pentru a nu repeta soluțiile (mai sunt n-1 noduri nepuse).
0
Partiția_1 la V1 se adaugă 0 noduri (sunt 𝐶𝑛−1 situații ) iar la V2 restul
1
Partiția_2 la V1 se adaugă 1 noduri (sunt 𝐶𝑛−1 situații ) iar la V2 restul
2
Partiția_3 la V1 se adaugă 2 noduri (sunt 𝐶𝑛−1 situații ) iar la V2 restul
......................................
𝑛−2
Partiția_n-1 la V1 se adaugă n-2 noduri (sunt 𝐶𝑛−1 situații ) iar la V2 restul
(altă partiție nu mai există, pentru că la V1 nu se pot adăuga încă n-1 noduri deoarece V2 ar fi vidă, în
acest caz , și ar fi în contradicție cu definiția grafului bipartit).
0 1 2 𝑛−2
În total sunt 𝐶𝑛−1 + 𝐶𝑛−1 + 𝐶𝑛−1 … … . +𝐶𝑛−1 posibilități de construire. Această sumă o calculăm
0 1 2 𝑛−1 n-1
astfel 𝐶𝑛−1 + 𝐶𝑛−1 + 𝐶𝑛−1 … … . +𝐶𝑛−1 =2 de unde rezultă că
0 1 2 𝑛−2 n-1 𝑛−1
𝐶𝑛−1 + 𝐶𝑛−1 + 𝐶𝑛−1 … … . +𝐶𝑛−1 =2 - 𝐶𝑛−1 = 2n-1 – 1

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