Bacalaureat 2007-Sesiunea iunie-iulie

Rezolvare bac 2007-Sesiunea de vara

Subiectul I

1. d

2. d

3. b

4. c

5. a

6. c

7. d

8. a

Subiectul II

1. 26904

2. 99

3.

#include <iostream>

using namespace std;

int main()

{

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

int p,n;

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

p=1;

while(p<n)

{

n=(n/p+1)*p+n%p;

p=p*10;

}

cout<<n;

return 0;

}

4.

citeste n

(numar natural, nenul)

p<-1

- daca p<n atunci

| - repeta

| | n<-( [n/p]+1)*p +n%p

| | p<-p*10

| | pana cand p>=n

| |_

|_

scrie n

Subiectul III

1.

#include <iostream>

using namespace std;

int main()

{

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

int i,n,p=0,j;

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

int a[n];

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

cin>>a[i];

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

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

if( (i==j/2 || j==i/2) && a[i]==a[ij] )

p=1;

if(p==1)

cout<<"incorect";

else

cout<<"corect";

return 0;

}

2.

a)

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

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

int k,i,c,r,j;

long n;

ofstream f("BAC.TXT");

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

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

c=n/k;

r=n%k;

while(r>0)

{

f<<c+1<<" ";

r--;

}

for(i=c;i>=1;i--)

for(j=1;j<=k;j++)

f<<i<<" ";

f.close();

return 0;

}

b)

Pentru n=10 si k=3, termenii sirului sunt: 1, 1, 1, 2, 2, 2, 3, 3, 3, 4. Formatiile (1, 1, 1), (2, 2, 2), (3, 3, 3) le numesc formatii complete. Formatia (4) o numesc formatie incompleta. Numarul de formatii complete este partea intreaga a numarului "n/k". Acest numar l-am notat cu "c". Numarul de elemente din formatia incompleta este "n%k" ( restul impartirii numarului "n" la numarul "k"). Acest numar l-am notat cu "r".

Daca exista formatia incompleta, scriu in fisier acele numere din formatia incompleta pana cand "r" devine 0. Scriu si urmatoarele numere din formatia completa, pornind de la "c" pana la 1, fiecare numar fiind scris de "k" ori.

Programul este eficient deoarece: nu foloseste un tablou, nu foloseste un algoritm de sortare, este liniar, este de tipul O(n).

3.

a)

struct lista

{

int info;

lista *urm;

} *p,*u;

b)

void numar(lista *p, unsigned &n)

{

lista *q;

q=p;

n=0;

while(q)

{

n++;

q=q->urm;

}

}