Model Bac 2016

Subiecte Model Bac 2016

Rezolvare Model Bac 2016

Subiectul I

1. c

2.

a) 36

b) 4 3 2 1

c)

citeste n,k

(numere naturale nenule, k>1)

pn<-0

-repeta

| x<-n

| -cat timp x%k=0 executa

| | x<-[x/k]

| |_

|

| -daca x=1 atunci

| | pn<-n

| |_

|

| n<-n-1

| pana cand pn<>0

|_

scrie pn

d)

#include <iostream>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

int n,k,pn,x;

cout<<"n=";cin>>n;

cout<<"k=";cin>>k;

pn=0;

while(pn==0)

{

x=n;

while(x%k==0)

x=x/k;

if(x==1)

pn=n;

n=n-1;

}

cout<<pn;

return 0;

}

Subiectul II

1. a

2. b

3. 4 5 6

4.

if( (i+j)%2!=0)

a[i][j]=i+j;

5.

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

char a[101];

int i;

cout<<"a=";cin.get(a,100);

cin.get();

for(i=0;i<strlen(a);i++)

if(strchr("aeioum",a[i])==0)

{

strcpy(a+i,a+i+1);

i--;

}

if(strlen(a)<=1)

cout<<"nu exista";

else

cout<<a;

return 0;

}

Subiectul III

1. c

2. solutia a sasea: (ambra, mosc, santal)

solutia a saptea: (cedru, iris, mosc)

3.

#include <iostream>

using namespace std;

int Cifre(long n)

{

int a[10],i,s=0;

for(i=0;i<10;i++)

a[i]=0;

while(n)

{

a[n%10]=a[n%10]+1;

n=n/10;

}

for(i=0;i<10;i++)

if(a[i]==1)

s=s+1;

return s;

}

4.

b)

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

ifstream f("date.in");

long n,p=1000000000,i=-1,pn=0,in=0;

int t=1;

while(f>>n)

{

if(n%2==0)

pn=n;

else

in=n;

if(pn<=p)

p=pn;

else

t=0;

if(in>=i)

i=in;

else

t=0;

}

if(t==0)

cout<<"NU";

else

cout<<"DA";

f.close();

return 0;

}

a)

Am citit numerele din fisier. Daca numarul este par, atunci variabila "pn" ia aceasta valoare, iar, daca numarul este impar, atunci variabila "in" ia aceasta valoare. Daca valoarea variabilei "pn" este mai mica ca valoarea variabilei "p" declarata la inceput cu valoarea 10000000000, atunci variabila "p" ia valoarea variabilei "pn". Daca numarul "i" declarat la inceput cu valoarea "-1" este mai mic decat "in", atunci "i" ia valoarea lui "in". Daca oricare dintre aceste doua cazuri nu sunt indeplinite, variabila "t" ia valoarea 0. Daca "t" are valoarea 0, atunci afisam "NU,altfel afisam "DA"

Algoritmul este eficient deoarece: parcurge o singura data fisierul, este liniar, nu foloseste un tablou, este de tipul O(n).