Pagini recente » Cod sursa (job #2196040) | Cod sursa (job #2431089) | Cod sursa (job #1012290) | Cod sursa (job #2396983) | Cod sursa (job #1973584)
#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/=2;
if(y>q) // ajustarea coordonatei y
y/=2;
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;
}