Pagini recente » Cod sursa (job #1820693) | Cod sursa (job #3285073) | Cod sursa (job #2248682) | Cod sursa (job #375572) | Cod sursa (job #841375)
Cod sursa(job #841375)
#include "fstream"
#include "iostream"
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int fractal(int k,int x,int y){
int laturaCadran=1<<k-1;
if (k==1)
return 0;
//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, 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;
}