370
Un Pătrat Magic este un pătrat ce conține toate numerele de la 1 la n 2 în care sumele fiecăror linii, coloane și a celor două diagonale sunt egale. Această sumă se mai numește și constanta pătratului magic.

Cerința
Se dă un număr natural n, de forma n=4k. Să se genereze și să se afișeze un pătrat magic de latură n.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Programul afișează pe ecran pătratul magic construit, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.
Restricții și precizări
1 ≤ n ≤ 100nva fi de forma4k,knumăr natural- orice rezultat corect va fi punctat
Exemplu
Intrare
4
Ieșire
1 15 14 4 12 6 7 9 8 10 11 5 13 3 2 16
#include <bits/stdc++.h>
using namespace std;
int n , a[101][101] , b[101][101] , cnt = 1;
int main()
{
cin >> n;
for(int i = 1 ; i <= n ; i++)
for(int j = 1 ; j <= n ; j++)
a[i][j] = cnt , cnt++;
for(int i = 1 ; i <= n / 4 ; i++)
for(int j = 1 ; j <= n / 4 ; j++)
b[i][j] = a[i][j];
for(int i = n - n / 4 + 1; i <= n ; i++)
for(int j = 1 ; j <= n / 4 ; j++)
b[i][j] = a[i][j];
for(int i = 1 ; i <= n / 4 ; i++)
for(int j = n - n / 4 + 1; j <= n ; j++)
b[i][j] = a[i][j];
for(int i = n - n / 4 + 1 ; i <= n ; i++)
for(int j = n - n / 4 + 1 ; j <= n ; j++)
b[i][j] = a[i][j];
for(int i = n / 4 + 1 ; i <= n - n / 4; i++)
for(int j = n / 4 + 1 ; j <= n - n / 4; j++)
b[i][j] = a[i][j];
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
if(b[i][j] != 0) cout << b[i][j] << " ";
else cout << a[n - i + 1][n - j + 1] << " ";
cout << '\n';
}
}
Comentarii