Pagini recente » Cod sursa (job #333133) | Cod sursa (job #2125646) | Cod sursa (job #333132) | Cod sursa (job #85023) | Cod sursa (job #333186)
Cod sursa(job #333186)
#include <stdio.h>
#define MAX_N 256
int n;
int A[MAX_N][MAX_N];
void cit() {
freopen("oras.in", "r", stdin);
freopen("oras.out", "w", stdout);
scanf("%d", &n);
}
inline int poz(int x) {
if (x % n) return x % n;
else return n;
}
void inductie(int k) {
if (k > n) return;
A[k - 2][k - 1] = 1; A[k - 1][k] = 1; A[k][1] = 1;
for (int i = 1; i <= k - 3; i++)
A[i][k - 1] = 1;
for (int i = 2; i <= k - 2; i++)
A[k][i] = 1;
inductie(k + 2);
}
void solve() {
if (n % 2 == 1) {
for (int i = 1; i <= n; i++)
A[i][poz(i + 1)] = 1;
for (int i = 1; i <= n; i++) {
int j = poz(i + 3);
while (j != i) {
if (!A[j][i]) A[i][j] = 1;
j = poz(j + 2);
}
}
return;
}
A[1][2] = 1; A[1][3] = 1; A[1][4] = 1;
A[2][3] = 1; A[2][4] = 1; A[2][5] = 1;
A[3][4] = 1; A[3][5] = 1;
A[4][5] = 1; A[4][6] = 1;
A[5][1] = 1; A[5][6] = 1;
A[6][1] = 1; A[6][2] = 1; A[6][3] = 1;
inductie(8);
}
void write() {
if (n == 4) {
printf("-1\n");
return;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
printf("%d", A[i][j]);
printf("\n");
}
}
int main() {
cit();
solve();
write();
return 0;
}