Bacalaureat 2016-Sesiunea august-septembrie
Subiecte bac 2016-Sesiunea de toamna
Rezolvare bac 2016-Sesiunea de toamna
Subiectul I
1. a
2.
a) 8
b) cel mai mic: 16
cel mai mare: 31
c) citeste n
(numar natural nenul)
p<-0
i<-1
-repeta
| m<-i
| -cat timp m%2=0 executa
| | m<[m/2]
| |_
|
| -daca m=1 atunci
| | p<-i
| |_
|
| i<-i+1
| pana cand i>n
|_
scrie p
d)
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
int n,i,m,p;
cout<<"n=";cin>>n;
p=0;
for(i=1;i<=n;i++)
{
m=i;
while(m%2==0)
m=m/2;
if(m==1)
p=i;
}
cout<<p;
return 0;
}
Subiectul al II-lea
1. c
2. c
3. 11aur
4. 1, 5, 7
5.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
int n,m,i,j,x,p=0;
cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
int a[n][m];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
cout<<endl<<"x=";cin>>x;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(a[i][j]==x && (i==0 || i==n-1 || j==0 || j==m-1) )
p=1;
if(p==1)
cout<<"DA";
else
cout<<"NU";
return 0;
}
Subiectul al III-lea
1. b
2. CRETA CRTAE
3.
#include <iostream>
#include <cmath>
using namespace std;
int nrcifre(int n)
{
int p=0;
while(n)
{
n=n/10;
p++;
}
return p;
}
void duplicare(int n, int &d)
{
int i,m;
d=0;
for(i=nrcifre(n)-1;i>=0;i--)
{
m=n/pow(10,i);
d=d*10+m%10;
if(m%10%2==0)
d=d*10+m%10;
}
if(d==n)
d=-1;
}
Metoda 2
void duplicare(int n, int &d)
{
int p=1,x=n;
d=0;
while (x)
{
if(x%10%2) d+=x%10*p;
else
{
d+=x%10*p;
p*=10;
d+=x%10*p;
}
x/=10;
p*=10;
}
if(d==n) d=-1;
}
4.
b)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
ifstream f("bac.txt");
int i=0,x,n=-1,v=-1;
while(i<3&&!f.eof())
{
f>>x;
if(x%2!=0)
i++;
}
while(i==3&&!f.eof())
{
f>>x;
if(x%2!=0)
i++;
else
if(n<x)
{
v=n;
n=x;
}
}
if(n==-1 || v==-1)
cout<<"Nu exista";
else
cout<<v<<" "<<n;
f.close();
return 0;
}
a)
Parcurg fisierul pana ce citesc 3 numere impare. Cat timp am gasit 3 numere impare, continui parcurgerea fisierului pana la gasirea urmatorului numar impar. Intre timp, compar valoarea citita cu valoarea variabilei ce tine minte cel mai mare numar par precedat de 3 numere impare. Aceasta variabila este "n" si este initializata cu valoarea -1. Daca valoarea citita este mai mare ca "n" atunci "v" ia valoarea lui "n" si "n" ia valoarea citita. "v" este variabila ce tine minte a doua cea mai mare valoare para precedata de 3 numere impare. "v" este initializat cu valoarea -1. Daca la final, "n" sau "v" raman cu valoarea -1, se afiseaza mesajul "Nu exista". In caz contrar, se afiseaza valorile variabilelor "v" si "n".
Programul este eficient deoarece: este de tipul O(n), nu foloseste un tablou, este liniar, nu parcurge in fiecare caz intregul fisier.