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 17

Pentru 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.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *