Bacalaureat 2015-Sesiunea iunie-iulie

Subiecte bac 2015-Sesiunea de vara

Rezolvare bac 2015-Sesiunea de vara

Subiectul I

1. d

2.

a) 2

b) cel mai mic n: 125

cel mai mare n: 624

c) citeste n,k

(numere naturale, k>1)

pm<-0

- pentru i<-1,n executa

| x<-i

| p<-0

| -cat timp x%k=0 executa

| | x<-[x/k]

| | p<-p+1

| |_

|

| - daca p>pm atunci

| | pm<-p

| |_

|_

scrie pm

d)

#include <iostream>

using namespace std;

int main()

{

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

int n,k,pm,i,p,x;

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

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

pm=0;

i=1;

while(i<=n)

{

x=i;

p=0;

while(x%k==0)

{

x=x/k;

p=p+1;

}

if(p>pm)

pm=p;

i=i+1;

}

cout<<pm;

return 0;

}

Subiectul II

1. a

2. b

3. 2, 7, 8

4.

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

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

char a[21],b[21];

int i;

cout<<"b=";cin.get(b,20);

cin.get();

for(i=0;i<strlen(b)/2;i++)

a[i]=b[i];

for(i=0;i<strlen(b)/2;i++)

cout<<a[i];

return 0;

}

5.

#include <iostream>

using namespace std;

int main()

{

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

int n,i,j;

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

int a[n][n];

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

cin>>a[0][i];

for(i=1;i<n;i++)

for(j=0;j<n;j++)

if(j==0)

a[i][j]=a[i-1][n-1];

else

a[i][j]=a[i-1][j-1];

cout<<endl;

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

{for(j=0;j<n;j++)

cout<<a[i][j]<<" ";

cout<<endl;

}

return 0;

}

Subiectul III

1. b

2. dcba

3.

#include <iostream>

using namespace std;

int Fibo(int n)

{

int f1=1,f2=1,f,p=2;

if(n==2 || n==1)

return 1;

else

{

while(p<n)

{

f=f2+f1;

f1=f2;

f2=f;

if(f%2!=0)

p++;

}

return f;

}

}

4.

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

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

ifstream f("bac.txt");

int i,a[101]={0},n,p=0,x=0;

while(f>>n)

a[n]++;

while(a[x]==0)

x++;

for(i=x;i<=100;i++)

{if(a[i]!=0)

if(i-x>=2)

{

cout<<x<<" "<<i;

cout<<endl;

x=i;

p=1;

}

else

x=i;

}

if(p==0)

cout<<"nu exista";

f.close();

return 0;

}

Memorez intr-un tablou de aparitii cu 101 elemente aparitia fiecariu element din intervalul [0;100] din secventa din fisier. In variabila "x" memorez prima pozitie cu valoare nenula din tabloul de aparitii. Cu variabila "i" pornind de la "x" la 100, cautam a doua pozitie cu valoare nenula. Daca "i-x ≥2" afisam perechea, altfel reinitializam pe x. La prima pereche solicitata, atribuim lui "p" valoarea 1. Daca la sfarsit "p" nu este 1, afisam "nu exista".

Algoritmul este eficient deoarece: este liniar, parcurge o singura data fisieruil, este de de tipul O(n).