Pagini recente » Cod sursa (job #250853) | Cod sursa (job #1300720) | Cod sursa (job #81592) | Cod sursa (job #2685611) | Cod sursa (job #986435)
Cod sursa(job #986435)
#include <fstream>
#include <cassert>
#define In "fractal.in"
#define Out "fractal.out"
using namespace std;
int nr[20];
inline int Div(int k,int x,int y)
{
if(!k)
return 0;
///prima regiune
const int m = ( 1 << (k-1) );
if(x<=m && y<=m)
return Div(k-1,y,x);
///a 2-a regiune
if(x>m&&y<=m)
return nr[k-1] + 1 + Div(k-1,x-m,y);
///a 3-a regiune
if(x>m && y>m)
return 2*nr[k-1] + 2 + Div(k-1,x-m,y-m);
return nr[k-1] + 3 +Div(k - 1, (1 << k) - y + 1,(1 << (k - 1) ) - x + 1);
}
int main()
{
int k, x , y, i;
ifstream f(In);
f>>k>>x>>y;
f.close();
nr[1] = 3;
for(i = 2;i < k; ++i)
nr[i] = 4*nr[i-1]+3;
swap(x,y);
ofstream g(Out);
g<<Div(k,x,y)<<"\n";
g.close();
return 0;
}