Cod sursa(job #2142030)

Utilizator fylot3Bogdan Filote fylot3 Data 24 februarie 2018 18:01:21
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
# include <stdio.h>

int hillbert1[2][2] = { {0, 3}, {1, 2} };
FILE *fin, *fout;

int numberOfSteps(int k, int x, int y) {

	if (k == 1)
		return hillbert1[x - 1][y - 1];

	int twoToK_1 = (1 << (k - 1));

	if (x <= twoToK_1 && y <= twoToK_1)
		return numberOfSteps(k - 1, y, x);

	if (x > twoToK_1 && y <= twoToK_1)
		return twoToK_1 * twoToK_1
		+ numberOfSteps(k - 1, x - twoToK_1, y);

	if (x > twoToK_1 && y > twoToK_1)
		return 2 * twoToK_1 * twoToK_1
		+ numberOfSteps(k - 1, x - twoToK_1, y - twoToK_1);

	return 3 * twoToK_1 * twoToK_1
		+ numberOfSteps(k - 1, twoToK_1 - (y - twoToK_1) + 1, twoToK_1 - x + 1);
}

int main(void) {
	int K, x, y;

	fin = fopen("fractal.in", "r");
	fscanf(fin, "%d%d%d", &K, &y, &x);
	fclose(fin);

	fout = fopen("fractal.out", "w");
	fprintf(fout, "%d", numberOfSteps(K, x, y));
	fclose(fout);
	return 0;
}