Rezolvare BAC Informatica 2009 – Varianta 3 – Subiectul al III-lea problema 4

Mai jos puteti gasi rezolvarea problemei 4 de la subiectul III din varianta 3 pentru examenul de bacalaureat din anul 2009

Rezolvare:

#include <iostream>
using namespace std;
int cif (int a, int b){
int nrAparitii = 0;
while(a > 0){
if (a % 10 == b)
nrAparitii++;
a = a/10;
}
return nrAparitii;
}
int main() {
int n, frecv[10];
/* n - numarul citit de la tatatura ( are 8 cifre)
* frecv - vector in care memoram frecventa fiecarei cifre in n
*/
int i;
cin>>n;
for (i = 0; i <= 9; i++)
frecv[i] = 0; //initializam frecv cu 0
while (n > 0) {
if (frecv[n % 10] == 0) {
frecv[n % 10] = cif(n,n % 10);
}
n = n / 10;
}
int ok = 0, nr = 0,p = 1;
for (i = 9; i >= 0 && ok == 0; i--) {
if (frecv[i] % 2 != 0) {
ok = 1;
nr = 0;
}
else if (frecv[i] > 0) {
int numarNou = 0, copie = p;
/* numarNou - cream numarul din cifra i
* copie - ne ajuta sa vedem cate cifre avem
*/
while (frecv[i] > 0){
numarNou = numarNou * 10 + i;
frecv[i]--;
if (frecv[i] % 2 == 0)
p = p * 10;
}
nr = ((nr/copie)*(p/copie)*(p/copie) +
+ numarNou)*copie + nr%copie;
/* scoatem prima parte a numarului, dupa care
* adaugam var numarNou si ultima parte
* a numarului
*/
}
}
cout<<nr<<'\n';
return 0;
}

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *