online: 5; azi: 1353; total: 53359 Manual clasa a ix a - Implementarea structurilor de date - Structuri de date

Probleme Rezolvate



Manual clasa a IX a

Implementarea structurilor de date

Structuri de date

Să se genereze toate numerele cu n cifre (n se citeşte de la tastatură şi n<20) care sunt egale cu suma cuburilor cifrelor lor
P entru a genera toate numerele cu n cifre care sunt egale cu suma cuburilor cifrelor lor, putem folosi un algoritm de tip bruteforce .
În primul rând, trebuie să generăm toate combinațiile posibile de cifre cu n elemente. Putem face acest lucru cu ajutorul unui loop imbricat, care parcurge fiecare cifră posibilă pentru fiecare poziție din număr. În fiecare iterație a loop -ului, verificăm dacă suma cuburilor cifrelor este egală cu numărul respectiv.
# include < iostream >
using namespace std ;
int main ()
{
int n;
cout << " Introduceti numarul de cifre: " ;
cin >> n;
for ( int i = 1 ; i < 10 ; i++) { // prima cifra nu poate fi 0
for ( int j = 0 ; j <= 9 ; j++) {
for ( int k = 0 ; k <= 9 ; k++) {
// generam numarul cu n cifre
int numar = i * 100 + j * 10 + k;
// calculam suma cuburilor cifrelor
int sumaCuburi = i * i * i + j * j * j + k * k * k;
// verificam daca suma cuburilor cifrelor este egala cu numarul
if ( sumaCuburi == numar ) {
cout << numar << endl ;
}
}
}
}
return 0 ;
}

În acest cod, variabilele i , j și k reprezintă cifrele posibile pentru fiecare poziție a numărului cu n cifre. După ce generăm numărul, calculăm suma cuburilor cifrelor și verificăm dacă este egală cu numărul respectiv. Dacă da, afișăm numărul.
Trebuie menționat că această metodă este foarte ineficientă pentru valori mari ale lui n, deoarece generează toate combinațiile posibile de cifre. O soluție mai eficientă ar fi utilizarea unei metode de tip backtracking sau optimizarea metodei brute- force prin generarea numai a combinațiilor posibile care au șanse mai mari de a fi egale cu suma cuburilor cifrelor.