int GetPriorityRecursive(int N, int r, int c)

{

int partsize = 1 << (N + N);

int part = 0;

if (c % partsize < partsize >> 1) part |= 0b01;

if (r % partsize < partsize >> 1) part |= 0b10;

return GetPriorityRecursive(N - 1, r, c) + partsize * part / 4;

}


int GetPriority(int N, int r, int c)

{

int priority = 0;

int partsize, part;

do {

partsize = 1 << (N + N);

part = 0;

if (c % partsize < partsize >> 1) part |= 0b01;

if (r % partsize < partsize >> 1) part |= 0b10;

priority += partsize * part / 4;

} while (--N);

return priority;

}


문제가 별거 아니라 그런지 차이점이 안느껴지네 ㅇㅅㅇ

눈대중이라 정확하진 않음