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 ≤ 100
n
va fi de forma4k
,k
numă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'; } }