Pagini recente » Cod sursa (job #885594) | Cod sursa (job #1229535) | Cod sursa (job #1158390) | Cod sursa (job #29264) | Cod sursa (job #685679)
Cod sursa(job #685679)
#include <fstream>
int getResult(int,int,int);
int main()
{
int K,x,y;
std::ifstream("fractal.in") >> K >> x >> y;
std::ofstream("fractal.out") << getResult(K,y,x);
return 0;
}
inline int pow2(int K) { return 1 << K ; }
int getResult(int K,int l,int c)
{
if(K == 0)
return 0;
else
{
if( l >= 1 && l <= pow2(K - 1) && c >=1 && c <= pow2(K - 1) ) //stanga sus,simetrie diag princ
return 0 + getResult(K - 1,c,l);
if( l > pow2(K - 1) && l <= pow2(K) && c > pow2(K - 1) && c <= pow2(K) ) //dreapta jos
return 2 + 2 * (pow2(K - 1)*pow2(K - 1) - 1) + getResult(K - 1,l - pow2(K - 1), c - pow2(K - 1) );
if( l >= 1 && l <= pow2(K - 1) && c > pow2(K - 1) && c <= pow2(K) ) //dreapta sus, simetrie diag sec
{
int _l = l, _c = c - pow2(K - 1);
return 3 + 3 * (pow2(K - 1)*pow2(K - 1) - 1) + getResult(K - 1, pow2(K - 1) - _c + 1,pow2(K - 1) - _l + 1);
}
if( l > pow2(K - 1) && l <= pow2(K) && c >=1 && c <= pow2(K - 1) ) //stanga jos
return 1 + pow2(K - 1)*pow2(K - 1) - 1 + getResult(K - 1,l - pow2(K - 1),c);
return 0;
}
}