Pagini recente » Cod sursa (job #691087) | Cod sursa (job #1489603) | Cod sursa (job #2287159) | Cod sursa (job #3278775) | Cod sursa (job #964082)
Cod sursa(job #964082)
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int distk1[3][3] = { {0,0,0}, {0,0,1}, {0,3,2}}; int main(){ FILE* fin = fopen("fractal.in", "r"); FILE* fout = fopen("fractal.out", "w"); int k, x, y; fscanf(fin, "%d %d %d", &k, &x, &y); int steps = 0; int lenk = pow((long double)2,k); while (k > 1) { int mid = lenk / 2; int block = 0; if (x <= mid && y <= mid) { block = 1; int tmp = x; x = y; y = tmp; } else if (x <= mid && y > mid) { block = 2; y -= mid; } else if (x > mid && y > mid) { block = 3; y -= mid; x -= mid; } else { block = 4; x -= mid; x = mid - x + 1; y = mid - y + 1; int tmp = x; x = y; y = tmp; } steps += (block - 1) * (mid * mid - 1) + (block - 1); lenk = mid; k--; } steps += distk1[x][y]; fprintf(fout, "%d", steps); fclose(fin); fclose(fout);}