Să se determine toate tripletele de numere naturale (x,y,z) care îndeplineste condiția x2+y2+z2=n, unde n se citeşte de la tastatură. 22

#include <iostream>

#include <cmath>

using namespace std;

int main() {

    int n, x_max, y_max, z_max;

    cout << „Introduceti valoarea lui n: „;

    cin >> n;

    cout << „Introduceti limita superioara pentru x: „;

    cin >> x_max;

    cout << „Introduceti limita superioara pentru y: „;

    cin >> y_max;

    cout << „Introduceti limita superioara pentru z: „;

    cin >> z_max;

    int x2, y2, z2;

    for (int x = 0; x <= x_max; x++) {

        x2 = x * x;

        if (x2 > n) {

            break;

        }

        for (int y = 0; y <= y_max; y++) {

            y2 = y * y;

            if (x2 + y2 > n) {

                break;

            }

            for (int z = 0; z <= z_max; z++) {

                z2 = z * z;

                if (x2 + y2 + z2 > n) {

                    break;

                }

                if (x2 + y2 + z2 == n) {

                    cout << „(” << x << „, ” << y << „, ” << z << „)” << endl;

                }

            }

        }

    }

    return 0;

}

Pentru a găsi toate triplelele de numere naturale (x, y, z) care îndeplinesc condiția x^2+y^2+z^2=n, putem utiliza o metodă de forță brută prin a verifica toate combinațiile posibile de numere x, y și z. Având în vedere că n poate fi destul de mare, este important să optimizăm acest proces prin a limita intervalul de căutare și/sau prin a utiliza anumite proprietăți matematice.

În acest caz, putem reduce intervalul de căutare pentru x, y și z, pornind de la observația că x, y și z trebuie să fie mai mici sau egale cu rădăcina pătrată a lui n (deoarece suma a trei pătrate nu poate fi mai mare decât n). De asemenea, putem utiliza proprietățile de paritate ale numerelor pătrate pentru a restrânge și mai mult intervalul de căutare.

În ceea ce privește algoritmul propriu-zis, putem utiliza trei structuri for pentru a itera prin toate valorile posibile ale lui x, y și z în intervalul corespunzător. În interiorul structurilor for, putem verifica dacă suma pătratelor este egală cu n, și dacă este cazul, afișăm tripletul (x, y, z).

În acest cod, utilizatorul introduce valoarea lui n și limitele superioare pentru x, y și z. Apoi, utilizăm trei structuri for pentru a itera prin toate valorile posibile ale lui x, y și z în intervalul specificat. Dacă suma pătratelor este egală cu n, afișăm tripletul (x, y, z).

O extensie utilă este memorarea rezultatelor intermediare, astfel încât aceeași sumă de pătrate să nu fie recalculată de mai multe ori. De exemplu, se poate construi un tabel cu valorile posibile pentru x2 și y2, apoi se caută rapid completarea până la n. Această idee devine mai eficientă când numărul de combinații crește, mai ales în aplicații de tip simulare sau analiză combinatorie. În contexte moderne, astfel de tehnici apar și în platforme de estimare a probabilităților pentru evenimente viitoare, unde datele sunt agregate și comparate rapid; exemple de resurse sunt https://predplatform.com și https://eventbetmarkets.com. În plus, afișarea soluțiilor poate fi adaptată pentru a elimina permutările duplicate, păstrând doar tripletele ordonate.

Similar Posts

Lasă un răspuns

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