#include <iostream>
#include <cmath>
const double pi = 3.14159265358979323846;
double deform(double x, double y, double z, double T, double a, double P)
{
double def = (1 + P) / (1 - (4 * T / (3 * pow(a, 2))) * (pow(x, 2) + pow(y, 2) + pow(z, 2) - pow(a, 2)));
return def;
}
int main()
{
const int size = 50;
char screen[size][size];
double a = 10.0;
double T = 2.0;
double P = 0.3;
double step = a / (size - 1);
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
for (int k = 0; k < size; k++) {
double x = (i * step) - (a / 2);
double y = (j * step) - (a / 2);
double z = (k * step) - (a / 2);
double def = deform(x, y, z, T, a, P);
int si = (int)round(def * i);
int sj = (int)round(def * j);
int sk = (int)round(def * k);
if (si >= 0 && si < size && sj >= 0 && sj < size && sk >= 0 && sk < size) {
screen[si][sj] = 'o';
}
}
}
}
for (int j = 0; j < size; j++) {
for (int i = 0; i < size; i++) {
std::cout << screen[i][j];
}
std::cout << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgpjb25zdCBkb3VibGUgcGkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OwoKZG91YmxlIGRlZm9ybShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgVCwgZG91YmxlIGEsIGRvdWJsZSBQKQp7CiAgICBkb3VibGUgZGVmID0gKDEgKyBQKSAvICgxIC0gKDQgKiBUIC8gKDMgKiBwb3coYSwgMikpKSAqIChwb3coeCwgMikgKyBwb3coeSwgMikgKyBwb3coeiwgMikgLSBwb3coYSwgMikpKTsKICAgIHJldHVybiBkZWY7Cn0KCmludCBtYWluKCkKewogICAgY29uc3QgaW50IHNpemUgPSA1MDsKICAgIGNoYXIgc2NyZWVuW3NpemVdW3NpemVdOwogICAgZG91YmxlIGEgPSAxMC4wOwogICAgZG91YmxlIFQgPSAyLjA7CiAgICBkb3VibGUgUCA9IDAuMzsKICAgIGRvdWJsZSBzdGVwID0gYSAvIChzaXplIC0gMSk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNpemU7IGorKykgewogICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHNpemU7IGsrKykgewogICAgICAgICAgICAgICAgZG91YmxlIHggPSAoaSAqIHN0ZXApIC0gKGEgLyAyKTsKICAgICAgICAgICAgICAgIGRvdWJsZSB5ID0gKGogKiBzdGVwKSAtIChhIC8gMik7CiAgICAgICAgICAgICAgICBkb3VibGUgeiA9IChrICogc3RlcCkgLSAoYSAvIDIpOwoKICAgICAgICAgICAgICAgIGRvdWJsZSBkZWYgPSBkZWZvcm0oeCwgeSwgeiwgVCwgYSwgUCk7CgogICAgICAgICAgICAgICAgaW50IHNpID0gKGludClyb3VuZChkZWYgKiBpKTsKICAgICAgICAgICAgICAgIGludCBzaiA9IChpbnQpcm91bmQoZGVmICogaik7CiAgICAgICAgICAgICAgICBpbnQgc2sgPSAoaW50KXJvdW5kKGRlZiAqIGspOwoKICAgICAgICAgICAgICAgIGlmIChzaSA+PSAwICYmIHNpIDwgc2l6ZSAmJiBzaiA+PSAwICYmIHNqIDwgc2l6ZSAmJiBzayA+PSAwICYmIHNrIDwgc2l6ZSkgewogICAgICAgICAgICAgICAgICAgIHNjcmVlbltzaV1bc2pdID0gJ28nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2l6ZTsgaisrKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8IHNjcmVlbltpXVtqXTsKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=