Pagini recente » Cod sursa (job #96883) | Cod sursa (job #284281) | Cod sursa (job #2105398) | Cod sursa (job #2523664) | Cod sursa (job #2490631)
#include <fstream>
#include <iostream>
using namespace std;
int p[18];
int fractal(int k,int x,int y)
{
if(x == 1 && y == 1) return 0;
if(x == 1 && y == 2) return 1;
if(x == 2 && y == 2) return 2;
if(x == 2 && y == 1) return 3;
if(x <= p[k - 1] && y <= p[k - 1])
return fractal(k - 1, y, x);
if(x <= p[k - 1] && y > p[k - 1])
return fractal(k - 1, x, y - p[k - 1]) + p[k - 1] * p[k - 1];
if(x > p[k - 1] && y > p[k - 1])
return fractal(k - 1,x - p[k - 1],y - p[k - 1]) + p[k - 1] * p[k - 1] * 2;
return fractal(k - 1,p[k - 1] - y + 1,p[k] - x + 1) + 3 * p[k - 1] * p[k - 1];
}
int main()
{
ifstream f("fractal.in");
ofstream g("fractal.out");
int k,x,y;
f >> k >> x >> y;
p[0] = 1;
for(int i = 1;i <= k; i++)
p[i] = p[i - 1] * 2;
int result = fractal(k, x, y);
g << result;
f.close();
g.close();
return 0;
}