Pagini recente » Cod sursa (job #1463913) | Cod sursa (job #1910435) | Cod sursa (job #1418412) | Cod sursa (job #1297332) | Cod sursa (job #848886)
Cod sursa(job #848886)
#include <fstream>
#include <algorithm>
using namespace std;
#define MAXK 16
ifstream fin("fractal.in");
ofstream fout("fractal.out");
void rotate1(int &x, int &y, int k) {
int aux = y;
y = x;
x = (1 << k) - aux + 1;
}
void rotate2(int &x, int &y, int k) {
int aux = y;
y = (1 << k) - x + 1;
x = aux;
}
int fractal (int x, int y, int k) {
if (k == 0)
return 0;
--k;
int sum = 0, d = 1 << k;
if (x <= d) {
if (y <= d) {
rotate2(x, y, k);
y = (1 << k) - y + 1;
}
else {
y -= d;
rotate1(x, y, k);
y = (1 << k) - y + 1;
sum += d * d * 3;
}
}
else {
x -= d;
if (y <= d)
sum += d * d;
else {
sum += d * d * 2;
y -= d;
}
}
return sum + fractal (x, y, k);
}
int main() {
int x, y, k;
fin >> k >> y >> x;
fout << fractal(x, y, k);
return 0;
}