Pagini recente » Cod sursa (job #2924717) | Cod sursa (job #387700) | Cod sursa (job #804495) | Cod sursa (job #2878985) | Cod sursa (job #841376)
Cod sursa(job #841376)
#include "fstream"
#include "iostream"
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int fractal(int k,int x,int y){
if (!k)
return 0;
laturaCadran=1<<k-1;
//Se afla in cadranul 1 apucam de coltul din dreapta sus si tragem spre coltul stanga jos
if (x<=laturaCadran && y<=laturaCadran)
return fractal(k-1,y,x); else
//Se afla in cadranul 2, parcurgem cadranul 1 si scadem din y costul laturii, pentru a-l reduce la cadranul 1
if (x<=laturaCadran && y>laturaCadran)
return laturaCadran*laturaCadran+fractal(k-1,x,y-laturaCadran); else
//Se afla in cadranul 3, parcurgem cadranele 1 si 2 si scadem din x costul laturii si din y costul laturii, pentru a-l reduce la cadranul 1
if (x>laturaCadran && y>laturaCadran)
return 2*laturaCadran*laturaCadran+fractal(k-1,x-laturaCadran,y-laturaCadran); else
//Se afla in cadranul 4, parcurgem cadranul 1,2 si 3 si pe urma apucam de coltul din stanga sus si tragem spre coltul din dreapta jos
if (x>laturaCadran && y<=laturaCadran)
return 3*laturaCadran*laturaCadran + fractal(k-1,laturaCadran-y+1,2*laturaCadran-x+1);
}
int main(){
int k,x,y;
f>>k>>x>>y;
g<<fractal(k,x,y);
return 0;
}