Pagini recente » Cod sursa (job #129072) | Cod sursa (job #907734) | Cod sursa (job #404418) | Cod sursa (job #1278612) | Cod sursa (job #507679)
Cod sursa(job #507679)
#include <cstdio>
const int N = 201;
short sol[N][N]; int n;
bool vizitat[N];
inline int inc(int a, int b)
{
return (a+b)%n;
}
void inconjurare()
{
for (int i = 0; i <= n-1; ++i)
sol[inc(i,1)][inc(i,2)] = true;
}
void trasare(int a, int b)
{
if ((vizitat[a])||(vizitat[b]))
return;
sol[a][b] = true;
}
void stergere(int a, int b)
{
if ((vizitat[a])||(vizitat[b]))
return;
sol[a][b] = false;
}
void creare_sensuri()
{
for (int k = 0; k <= n-1; ++k)
{
for (int i = 2; i <= (n-1)/2; ++i)
if (i % 2 == 0)
trasare(inc(i,k),k);
else
trasare(k,inc(i,k));
for (int i = n-2; i >= (n+2)/2; --i)
if ((n-i) % 2 == 0)
trasare(k,inc(i,k));
else
trasare(inc(i,k),k);
if (n % 2 == 0)
{
if (sol[k][inc(n/2+1,k)] == true)
trasare(inc(n/2,k),k);
else
trasare(k,inc(n/2,k));
if (sol[inc(n/2,k)][k])
{
stergere(inc(n/2,k),inc(n/2+1,k));
trasare(inc(n/2+1,k),inc(n/2,k));
}
}
vizitat[k] = true;
}
}
void afisare()
{
for (int i = 0; i <= n-1; ++i)
{
for (int j = 0; j <= n-1; ++j)
if (sol[i][j] == true)
printf("1");
else
printf("0");
printf("\n");
}
}
int main()
{
freopen("oras.in","r",stdin);
freopen("oras.out","w",stdout);
scanf("%i",&n);
inconjurare();
creare_sensuri();
afisare();
return 0;
}