Simulare Mate-Info
Subiecte Simulare Bac 2016 Mate_Info
Rezolvare Simulare Bac 2016_Mate-Info
Subiectul I
1. c
2.
a) 634
b) 592, 590, 591, 596, 0
c)
m<-0
-repeta
| citeste x
| (numar natural)
| y<-0
| c<-y%10
| -cat timp c>y%10 executa
| | c<-y%10
| | y<-[y/10]
| |_
|
| -daca y<>0 atunci
| | m<m*10+c
| |_
|
| pana cand x=0
|_
scrie m
d)
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
int m,x,y,c;
m=0;
do
{
cin>>x;
y=x;
do
{
c=y%10;
y=y/10;
}while(c>y%10);
if(y!=0)
m=m*10+c;
}while(x!=0);
cout<<m;
return 0;
}
Subiectul II
1. d
2. b
3. if(t1.baza1*t1.inaltime1==t2.baza2*t2.inaltime2)
cout<<"aceeasi arie";
else
cout<<"arii diferite";
4. if( (i+j)%2==0)
a[i]="! ";
else
a[i]="? ";
5.
#include <iostream>
#include <string.h>
using namespace std;
int nrc(char a[101],char i)
{
int j,s=0;
for(j=0;j<strlen(a);j++)
if(a[j]==i)
s++;
return s;
}
int main()
{
cout << "Hello world!" << endl;
char a[101],b[101],c;
int p=1;
cout<<"a=";cin.get(a,100,'\n');
cin.get();
cout<<"b=";cin.get(b,100,'\n');
cin.get();
for(c='a';c<'z';c++)
if(nrc(a,c)!=nrc(b,c))
p=0;
if(p==1)
cout<<"DA";
else
cout<<"NU";
return 0;
}
Subiectul III
1. c
2. rusi
sale
3.
#include <iostream>
using namespace std;
int sumadiv(int n)
{
int i,s=0;
for(i=2;i<n;i++)
if(n%i==0)
s=s+i;
return s;
}
int sPar(int n)
{
int i;
i=n+1;
while(sumadiv(i)%2!=0 || i%2!=0)
i++;
return i;
}
4.
b)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
ifstream f("bac.in");
int a[1000],b[1000],x,i,p=0;
for(i=1;i<=999;i++)
{a[i]=0;
b[i]=0;
}
while(f>>x)
{
if(x>999)
a[x%1000]++;
else
if(x<=999 && x>=100)
b[x]++;
}
for(i=100;i<=999;i++)
if(a[i]!=0&&b[i]!=0)
{cout<<i<<'\n';
p=1;
}
if(p==0)
cout<<"Nu exista";
f.close();
return 0;
}
a)
Cu ajutorul variabilei "x" am citit numerele din fisier. Daca numarul citit este mai mare decat 999, atunci in tabloul "a[1000]", declarat la inceput cu toate valorile 0, pe pozitia x%1000 din tablou, valoarea acesteia creste. Astfel, in tabloul "a" retinem toate sufixele numerelor cu mai mult de trei cifre. Daca numarul citit este mai mic sau egal cu 999 si mai mare sau egal cu 100, atunci pe pozitia b[x], valoarea acesteia creste ( b[1000] este un tablou declarat la inceput cu toate valorile 0).
Cu ajutorul variabilei "i" parcurgem tablourile "a" si "b" incepand de la pozitia 100 pana la pozitia 999. Daca in ambele tablouri pe pozitia "i" nu se afla valoarea 0, atunci se afiseaza valoarea "i". In acest caz, valoarea variabile "p" declarata la inceput cu 0 devine 1. Daca valoarea variabile "p" ramane "0" se afiseaza mesajul "Nu exista".
Programul este eficient deoarece: este liniar, parcurge o singura data fisierul, este de tipul O(n).