Pagini recente » Cod sursa (job #1818633) | Cod sursa (job #2910391) | Cod sursa (job #3177115) | Cod sursa (job #2454149) | Cod sursa (job #1978273)
#include <iostream.h>
#include <math.h>
int x,y,nrpasi;
int v[5]={0,1,2,3,4}; // initializarea vectorului cu cadrane
int cadr(int k,int q){ // calculul cadranului
if(x<=q/2)
if(y<=q/2)
return v[1];
else
return v[4];
else
if(y<=q/2)
return v[2];
else
return v[3];
}
int main (){
int k,q,aux,c;
cin>>k>>x>>y;
while(k>=1){
q=pow(2,k);
if(x>q) // ajustarea coordonatei x
x-=q;
if(y>q) // ajustarea coordonatei y
y-=q;
c=cadr(k,q);
if(c==1){ // ajustarea cadranului I
aux=v[2];
v[2]=v[4];
v[4]=aux;
}
if(c==4){ // ajustarea cadranului IV
aux=v[1];
v[1]=v[3];
v[3]=aux;
}
k--; // micsorarea ordinului
nrpasi=nrpasi+((pow(2,2*k))*(c-1)); // calcularea numarului de pasi
}
cout<<nrpasi;
}