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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema PatratMagic1 :
#include <bits/stdc++.h>
using namespace std;
/** # desen tehnic
0 0 N N N N 0 0
0 0 N N N N 0 0
V V 0 0 0 0 E E
V V 0 0 0 0 E E
V V 0 0 0 0 E E
V V 0 0 0 0 E E
0 0 S S S S 0 0
0 0 S S S S 0 0
**/
int main()
{
int nr = 1, n, a[101][101];
cin>>n;
/// generare clasica
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
a[i][j] = nr++;
/// vom roti elem patratului din zonele N, S, E si V cu 180 grade
/// N - S
for(int k=0; k<n/4; ++k)
{
int pas = 1;
for(int x=k, y=n/4, i=n-k-1, j=3*n/4-1; pas<=n/2; ++y, --j, ++pas)
swap(a[x][y], a[i][j]);
}
/// V - E
for(int k=0; k<n/4; ++k)
{
int pas = 1;
for(int x=n/4, y=k, i=3*n/4-1, j=n-k-1; pas<=n/2; ++x, --i, ++pas)
swap(a[x][y], a[i][j]);
}
/// afisare
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
cout<<a[i][j]<<' ';
cout<<'\n';
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3128 PatratMagic1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3128 PatratMagic1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!