这是hiho一下 第163周的题目。
题目描述
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
希尔伯特曲线是以下一系列分形曲线 Hn 的极限。我们可以把 Hn 看作一条覆盖 2n × 2n 方格矩阵的曲线,曲线上一共有 2n × 2n 个顶点(包括左下角起点和右下角终点),恰好覆盖每个方格一次。
Hn(n > 1)可以通过如下方法构造:
将 Hn-1 顺时针旋转90度放在左下角
将 Hn-1 逆时针旋转90度放在右下角
将2个 Hn-1 分别放在左上角和右上角
用3条单位线段把4部分连接起来
对于 Hn 上每一个顶点 p ,我们定义 p 的坐标是它覆盖的小方格在矩阵中的坐标,定义 p 的序号是它在曲线上从起点开始数第几个顶点。给定 p 的坐标,你能算出 p 的序号吗?
输入
输入包含3个整数 n , x , y 。 n 是分形曲线的阶数,(x, y)是 p 的坐标。
1 ≤ n ≤ 30
1 ≤ x, y ≤ 2n
输出
p 的序号。
样例输入
3 6 1
样例输出
60
算法简介
方法很简单,就是按照题目中描述方法对曲线做切割,判断位置是在左下角或者右上角之类的,然后根据位置切割递归。
容易出错的地方在于这里面的索引值之类的都是从1开始,所以需要 n+