#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#define db(a) \
cout << #a << " = " << a << endl
#define db2(a, b) \
cout << #a << " = " << a << " " << #b << " = " << b << endl
#define inf (1<<30)
#define foreach(it, m) \
for (typeof(m.begin()) it = m.begin(); it != m.end(); it++)
#define MAX 2048
using namespace std;
char M[MAX][MAX];
void solve(int n, int v, int h) {
if (n == 1) {
M[v][h] = '/';
M[v - 1][h + 1] = '/';
M[v - 1][h + 2] = '\\';
M[v][h + 1] = '_';
M[v][h + 2] = '_';
M[v][h + 3] = '\\';
}
else {
solve(n - 1, v, h);
solve(n - 1, v - pow(2., n - 1), h + pow(2., n - 1));
solve(n - 1, v, h + pow(2., n));
}
}
int main() {
#ifdef dennisbot
freopen("in.in", "r", stdin);
freopen("ou.out", "w", stdout);
#endif
int n;
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
M[i][j] = ' ';
}
}
string linea = "";
while (scanf("%d", &n) != EOF && n != 0) {
for (int i = 0; i < pow(2., n + 1); i++) {
for (int j = 0; j < pow(2., n + 1); j++) {
M[i][j] = ' ';
}
}
solve(n, pow(2., n) - 1, 0);
for (int i = 0; i < pow(2., n) ; i++) {
linea = "";
for (int j = 0; j < pow(2., n + 1); j++) {
if (M[i][j] != ' ') {
printf("%s%c",linea.c_str(), M[i][j]);
linea = "";
}
else linea += " ";
}
puts("");
}
puts("");
}
return 0;
}
Mostrando entradas con la etiqueta judge. Mostrar todas las entradas
Mostrando entradas con la etiqueta judge. Mostrar todas las entradas
miércoles, 18 de abril de 2012
1406. The Sierpinski Fractal, tju online judge
Etiquetas:
1406. The Sierpinski Fractal,
judge,
online,
TJU
1178. Fractal, tju online judge
#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#define db(a) \
cout << #a << " = " << a << endl
#define db2(a, b) \
cout << #a << " = " << a << " " << #b << " = " << b << endl
#define inf (1<<30)
#define foreach(it, m) \
for (typeof(m.begin()) it = m.begin(); it != m.end(); it++)
#define MAX 729
using namespace std;
char M[MAX][MAX];
void solve(int n, int v, int h) {
if (n == 1) {
M[v][h] = 'X';
}
else {
solve(n - 1, v - pow(3., n - 2), h - pow(3., n - 2));
solve(n - 1, v - pow(3., n - 2), h + pow(3., n - 2));
solve(n - 1, v, h);
solve(n - 1, v + pow(3., n - 2), h - pow(3., n - 2));
solve(n - 1, v + pow(3., n - 2), h + pow(3., n - 2));
}
}
int main() {
#ifdef dennisbot
freopen("in.in", "r", stdin);
freopen("ou.out", "w", stdout);
#endif
int n = 7;
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
M[i][j] = ' ';
}
}
string linea;
solve(n, (int)pow(3., n - 1) / 2, (int)pow(3., n - 1) / 2);
while (scanf("%d", &n) != EOF) {
if (n == -1) break;
for (int i = 0; i < pow(3., n - 1) ; i++) {
linea = "";
for (int j = 0; j < pow(3., n - 1); j++) {
if (M[i][j] != 'X')
linea += " ";
else {
printf("%sX", linea.c_str());
linea = "";
}
}
puts("");
}
puts("-");
}
return 0;
}
Suscribirse a:
Entradas (Atom)