Pagini recente » Cod sursa (job #1027965) | Cod sursa (job #619707) | Cod sursa (job #150853) | Cod sursa (job #949978) | Cod sursa (job #1943134)
#include <fstream>
using namespace std;
long long k,x,y,L,sol;
ifstream fin ("fractal.in");
ofstream fout ("fractal.out");
int fractal (int k,int x, int y){
if (k == 1)
return 0;
k /= 2;
if ( x <= k ){
if (y <= k)
return fractal (k,y,x);
return 3*k*k + fractal (k,2*k-y+1,k-x+1);
}
if (y > k)
return 2*k*k + fractal (k,x-k,y-k);
return k*k + fractal (k,x-k,y);
}
int main (){
// 1 4
// 2 3
fin>>k>>x>>y;
fout<<fractal ((1<<k),y,x);
/* L = (1<<k);
//if (x > y)
swap (x,y);
while (L!=1){
L/=2;
if (x <= L){
if (y > L){
sol += 3*L*L; // merge 3 cadrane pana acolo (e in 4)
x = 2*L-y+1;
y = L-x+1;
continue;
}
swap (x,y);
continue;
}
if (y <= L){
sol += L*L; // un cadran
x -= L;
continue;
}
sol += L*L*2; // doua cadrane
x -= L;
y -= L;
continue;
}
fout<<sol;
*/
return 0;
}