Pagini recente » Cod sursa (job #959930) | Cod sursa (job #1737179) | Cod sursa (job #572488) | Cod sursa (job #2172225) | Cod sursa (job #2486880)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iomanip>
#define NMAX 120000
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int k, col_start, lin_start;
int calculate(int k_curent, int col, int lin, int val) {
//cout << k_curent << " " << lin << " " << col << " " << val << "\n";
if (k_curent == 1) {
if (col == 1 && lin == 1) return val;
if (col == 2 && lin == 1) return 1 + val;
if (col == 2 && lin == 2) return 2 + val;
return 3 + val;
}
int val_add = (1 << (2 * k_curent - 2) );
int mid = (1 << (k_curent - 1));
if (lin <= mid && col <= mid) {
return calculate(k_curent - 1, lin, col, val);
}
if (lin > mid && col <= mid) {
return calculate(k_curent - 1, col, lin - mid, val + val_add);
}
if (lin > mid && col > mid) {
return calculate(k_curent - 1, col - mid, lin - mid, val + 2 * val_add);
}
if (lin <= mid && col > mid) {
return calculate(k_curent - 1, 2 * mid - col + 1, mid - lin + 1, val + 3 * val_add);
}
}
int main() {
f >> k >> col_start >> lin_start;
g << calculate(k, col_start, lin_start, 0);
return 0;
}