Pagini recente » Cod sursa (job #3004960) | Cod sursa (job #2031370) | Cod sursa (job #3166608) | Cod sursa (job #2447113) | Cod sursa (job #2251267)
#include <iostream>
#include <fstream>
using namespace std;
int l[15];
void feltolt_l(int i)
{
l[i]=4*(l[i-1]+1)-1;
if(i<15) feltolt_l(i+1);
}
int ketto_hatv(int x)
{
int ered=1;
for(int i=1; i<=x; i++) ered=ered*2;
return ered;
}
int hanyadik(int i, int x, int y) //x=sor, y=osz
{
int hatv=ketto_hatv(i-1);
//cout<<"szint="<<i<<" koordinatak "<<x<<" "<<y<<" hatvany "<<hatv<<endl;
if(i>1)
{
if(x<=hatv and y<=hatv)
{
//cout<<"szint="<<i<<" +0"<<endl;
return hanyadik(i-1, y, x);
}
else if(x>hatv and y<=hatv)
{
//cout<<"szint="<<i<<" +"<<l[i-1]+1<<endl;
return l[i-1]+1+hanyadik(i-1, x-hatv, y);
}
else if(x>hatv and y>hatv)
{
//cout<<"szint="<<i<<" +"<<2*l[i-1]+2<<endl;
return 2*l[i-1]+2+hanyadik(i-1, x-hatv, y-hatv);
}
else
{
//cout<<"szint="<<i<<" +"<<3*l[i-1]+3<<endl;
return 3*l[i-1]+3+hanyadik(i-1, 2*hatv-y+1, hatv-x+1);
}
}
else
{
if(x==1 and y==1) return 0;
else if(x==1 and y==2) return 3;
else if(x==2 and y==1) return 1;
else if(x==2 and y==2) return 2;
}
}
int ered=0;
int main()
{
ifstream f("fractal.in");
ofstream g("fractal.out");
l[0]=0;
feltolt_l(1);
//for(int i=1; i<=5; i++) cout<<l[i]<<endl;
int l, sor, osz;
f>>l>>osz>>sor;
g<<hanyadik(l, sor, osz)<<endl;
return 0;
}