Să se calculeze suma tuturor numerelor formate din cifre impare distincte. 20
Indicație: cel mai mic număr este 1, iar cel mai mare 97531.
#include <iostream>
using namespace std;
int main()
{
int suma = 0;
// parcurge toate numerele formate din cifre impare distincte
for (int n = 13579; n <= 97531; n += 2)
{
// verifica daca toate cifrele sunt impare si distincte
int temp = n;
bool cifre_impare = true;
bool cifre_distincte = true;
bool cifre_utilizate[5] = {false};
while (temp != 0)
{
int cifra = temp % 10;
if (cifra % 2 == 0)
{
cifre_impare = false;
break;
}
if (cifre_utilizate[cifra / 2])
{
cifre_distincte = false;
break;
}
cifre_utilizate[cifra / 2] = true;
temp /= 10;
}
// adauga numarul la suma daca indeplineste conditiile
if (cifre_impare && cifre_distincte)
{
suma += n;
}
}
// afiseaza suma
cout << „Suma numerelor formate din cifre impare distincte este ” << suma << endl;
return 0;
}
Programul parcurge toate numerele impare formate din cifre impare distincte (in intervalul [13579, 97531]). Pentru fiecare astfel de numar, verifica daca toate cifrele sunt impare si distincte, folosind o variabila booliana pentru fiecare conditie.
Daca numarul indeplineste ambele conditii, il adauga la suma. In final, afiseaza suma numerelor gasite.
Observati ca programul foloseste un vector de bool-uri (cifre_utilizate
) pentru a tine evidenta cifrelor utilizate in verificarea cifrelor distincte. Acest vector este initializat cu false
la inceputul programului si are lungimea 5 (deoarece numerele sunt formate doar din cifre impare, adica 1, 3, 5, 7 si 9).