确定两座城市所在坐标, 就可以计算距离了。
坐标可以递归计算。
虽然我看不懂题的样子很狼狈, 但是我写伪代码的样子真的很靓仔 >w<
//霍心草坐
pair<int, int> calc(int N, int p)
{
if(N == 0) return make_pair(1, 1);
// end
int tmp = 1 << (2 * (N-1)) ; //size of smaller city block
pair<int, int> smaller ;
if(p > 3*tmp) {
smaller = calc(N-1, p-3*tmp);
smaller.first += tmp;
smaller.second += tmp;
}
else
if(p > 2*tmp) {
smaller = calc(N-1, p-2*tmp);
//一系列操作
smaller.first += tmp;
}
else
if(p > tmp) {
smaller = calc(N-1, p-tmp);
//一系列操作
smaller.second += tmp;
}
else {
smaller = calc(N-1, p);
//一系列操作
}
return smaller; //now
}