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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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