Pagini recente » Cod sursa (job #1874302) | Cod sursa (job #1172874) | Cod sursa (job #876952) | Cod sursa (job #2624856) | Cod sursa (job #2020846)
#include <fstream>
#include <math.h>
using namespace std;
unsigned f(unsigned short k, unsigned x, unsigned y){
if(k == 1){
if(x == 1){
if(y == 1) return 0;
if(y == 2) return 1;
}
if(x == 2){
if(y == 1) return 3;
if(y == 2) return 2;
}
}
else{
if( x<=pow(2, k-1) && y<=pow(2, k-1))
return f(k-1, y, x);
if( x<=pow(2, k-1) && y>pow(2, k-1))
return pow(4, k-1)-1+1 + f(k-1, x, y-pow(2, k-1));
if( x>pow(2, k-1) && y>pow(2, k-1))
return 2*(pow(4, k-1)-1)+2 + f(k-1, x-pow(2, k-1), y-pow(2, k-1));
if( x>pow(2, k-1) && y<=pow(2, k-1))
return 3*(pow(4, k-1)-1)+3 + f(k-1, pow(2, k-1)-y+1, pow(2,k-1)-(x-pow(2, k-1))+1);
}
}
int main()
{
unsigned short k;
unsigned x, y;
ifstream fin("fractal.in");
fin>>k>>x>>y;
fin.close();
ofstream fout("fractal.out");
fout<<f(k, x, y);
fout.close();
return 0;
}