👤
Deea768
a fost răspuns

numerele trebuie să fie diferite si pătrate perfecte
toate sa aiba aceeași sumă pe orizontală verticala si diagonala


Numerele Trebuie Să Fie Diferite Si Pătrate Perfectetoate Sa Aiba Aceeași Sumă Pe Orizontală Verticala Si Diagonala class=

Răspuns :

#include <iostream>

#include <cmath>

using namespace std;

 

int pp(int x)

{

    if (sqrt(x)==(int)(sqrt(x)))

        return 1;

    else

        return 0;

}

 

int main()

{

    int n,i,j,a[101][101],S_ref=0,S1,S2,S3,ok1=1,ok2;

    cin>>n;

    for (i=1;i<=n;i++)

        for (j=1;j<=n;j++)

            cin>>a[i][j];

    i=1;

    do{

        j=1;

        do{

            if (pp(a[i][j])==0)

                ok1=0;

            j++;

        }

        while (ok1==1 && j<=n);

        i++;

        }

    while (ok1==1 && i<=n);

    if (ok1)

    {

        S3=0;

        ok2=1;

        for (i=1;i<=n;i++)

            S_ref=S_ref+a[i][i];

        for (i=1;i<=n;i++){

            S1=0;S2=0;

            for (j=1;j<=n;j++)

                {

                    S1=S1+a[i][j];

                    S2=S2+a[j][i];

                    if (i+j==n+1)

                        S3=S3+a[i][j];

                }

            if (S1!=S_ref || S2!=S_ref)

                ok2=0;

        }

        if (ok2==1 && S3!=S_ref)

            ok2=0;

    }

    if (ok2==1)

        cout<<"Matrice OK";

    else

        cout<<"Not OK";

    return 0;

}