Pagini recente » Cod sursa (job #449364) | Diferente pentru teorema-chineza-a-resturilor intre reviziile 59 si 89 | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2017813)
#include<fstream>
using namespace std;
ifstream in("fractal.in");
ofstream out("fractal.out");
int p[17], k, x, y, pasi, a, b, i;
void fractal(int k, int x, int y) {
if (k > 0) {
if (x <= p[k - 1] && y <= p[k - 1]) {
fractal(k - 1, y, x);
}
if (x > p[k - 1] && y <= p[k - 1]) {
pasi += p[k - 1] * p[k - 1];
fractal(k - 1, x - p[k - 1], y);
}
if (x <= p[k - 1] && y > p[k - 1]) {
pasi += p[k - 1] * p[k - 1] * 3;
fractal(k - 1, p[k] + 1 - y, p[k - 1] - x + 1);
}
if (x > p[k - 1] && y > p[k - 1]) {
pasi += p[k - 1] * p[k - 1] * 2;
fractal(k - 1, x - p[k - 1], y - p[k - 1]);
}
}
return;
}
int main() {
in >> k >> y >> x;
p[0] = 1;
for (i = 1; i <= 15; i++) {
p[i] = p[i - 1] * 2;
}
fractal(k, x, y);
out << pasi;
return 0;
}