hiho week 163 register

Ended

Participants:309

Verdict:Accepted
Score:100 / 100
Submitted:2017-08-16 21:34:34

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream>
using namespace std;
long long HilbertNumber(int n ,int x ,int y){
    if(n == 0) return 1;
    int m = 1<<(n-1);
    if(x <= m && y <= m){
        return HilbertNumber(n-1,y,x);
    }
    if(x <= m && y > m){
        return 1LL*m*m + HilbertNumber(n-1,x,y-m);
    }
    if(x > m && y > m){
        return 2LL*m*m + HilbertNumber(n-1,x-m,y-m);
    }
    if(x > m && y <= m){
        return 3LL*m*m + HilbertNumber(n-1,m+1-y,2*m+1-x);
    }
}
int main(){
    int n,x,y;
    cin >> n >> x >> y;
    long long result = HilbertNumber(n,x,y);
    cout<<result<<endl;
    return 0;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX