https://www.acmicpc.net/problem/1074
#include<iostream>
using namespace std;
#include<cmath>
int FuncZ(int n, int r, int c)
{
if (n ==0)
return 0;
int half = (1 << (n - 1));
if (r < half && c < half) //1사분면
return FuncZ(n - 1, r, c);
if (r < half && c >= half) //3
return half * half + FuncZ(n - 1, r, c - half);
if (r >= half && c < half) //2사분면
return 2* half * half + FuncZ(n - 1, r - half, c);
return 3 * half * half + FuncZ(n - 1, r- half, c- half); //4사분면
}
int main()
{
int n, r, c;
cin >> n >> r >> c;
cout << FuncZ(n, r, c);
}
어렵다.. 예전에 한번 풀었던건데 다시보니까 모르겠다.
재귀식 만들때 2,3 번째 사각형 나눌때 행과 열이 계속 헷갈려서 오래걸렸다.