Pagini recente » Cod sursa (job #1135892) | Cod sursa (job #923340) | Cod sursa (job #857146) | Cod sursa (job #2165750) | Cod sursa (job #1225499)
#include <fstream>
#define MAX 14
#define calcul m /= 2; steps += (total[count - 1] + 1) * (cad - 1); count--; x %= m; y %= m; if(!x) x = m; if(!y) y = m;
using namespace std;
ifstream f1 ("fractal.in");
ofstream f2 ("fractal.out");
int k, x, y, m = 2;
int steps = 0;
int total[MAX];
int count;
int cad = 0;
int config = 0;
/*void calc(){
m /= 2;
steps += (total[count - 1] + 1) * (cad - 1);
count--;
x %= m;
y %= m;
}*/
void config_0();
void config_1();
void config_2();
void config_3();
int main(){
f1>>k;
f1>>x;
f1>>y;
if(k > 1){
int aux = k;
count = k - 1;
while(aux > 1){
m *= 2;
aux--;
}
total[0] = 3;
for(int i = 1; i < k - 1; i++){
total[i] = total[i - 1] * 4 + 3;
}
config_0();
}
f2<<steps<<"\n";
return 0;
}
void config_0(){
if(count){
if(x * 2 > m){
if(y * 2 > m){
cad = 3;
calcul
config_0();
} else {
cad = 4;
calcul
config_1();
}
} else {
if(y * 2 > m){
cad = 2;
calcul
config_0();
} else {
cad = 1;
calcul
config_2();
}
}
} else {
if(x == 1){
if(y == 2){
steps += 1;
}
} else {
if(y == 1){
steps += 3;
} else {
steps += 2;
}
}
}
}
void config_1(){
if(count){
if(x * 2 > m){
if(y * 2 > m){
cad = 1;
calcul
config_3();
} else {
cad = 4;
calcul
config_0();
}
} else {
if(y * 2 > m){
cad = 2;
calcul
config_1();
} else {
cad = 3;
calcul
config_1();
}
}
} else {
if(x == 1){
if(y == 1){
steps += 2;
} else {
steps += 1;
}
} else {
if(y == 1){
steps += 3;
}
}
}
}
void config_2(){
if(count){
if(x * 2 > m){
if(y * 2 > m){
cad = 3;
calcul
config_2();
} else {
cad = 2;
calcul
config_2();
}
} else {
if(y * 2 > m){
cad = 4;
calcul
config_3();
} else {
cad = 1;
calcul
config_0();
}
}
} else {
if(x == 1){
if(y == 2){
steps += 3;
}
} else {
if(y == 1){
steps += 1;
} else {
steps += 2;
}
}
}
}
void config_3(){
if(count){
if(x * 2 > m){
if(y * 2 > m){
cad = 1;
calcul
config_1();
} else {
cad = 2;
calcul
config_3();
}
} else {
if(y * 2 > m){
cad = 4;
calcul
config_2();
} else {
cad = 3;
calcul
config_3();
}
}
} else {
if(x == 1){
if(y == 1){
steps += 2;
} else {
steps += 3;
}
} else {
if(y == 1){
steps += 1;
}
}
}
}