#include <iostream>
using namespace std;
int main()
{
int n, nc=0, A[20][20], B[10];
cin>>n;
while(n>0)
{
B[++nc]=n%10;
n=n/10;
}
if(nc%2==1) n=2*nc-1;
else n=2*nc;
//cu diferenta minima pana la margine
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int dmin=10;
if(i-1<dmin) dmin=i-1;
if(n-i<dmin) dmin=n-i;
if(j-1<dmin) dmin=j-1;
if(n-j<dmin) dmin=n-j;
A[i][j]=B[dmin+1];
}
//sau cu simetrie fata de diagonala secundara
/*
for(int i=1;i<=n;i++)
for(int j=1;i+j<=n+1;j++)
if(i<j) A[i][j]=A[n+1-j][n+1-i]=B[i];
else A[i][j]=A[n+1-j][n+1-i]=B[j];
*/
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
return 0;
}
|