rtrt 代码如下 (解析:leftup为左上,rightup为右上,leftdown为左下,rightdown为右下)
#include<bits/stdc++.h>
using namespace std;
const int N=(2 <<10 )+5;
long long k,gx,gy;
long long mp[N][N];
void fn(long long gzx,long long gzy,long long large,long long qdx,long long qdy){
if(large==1){
return ;
}
if(gzx <=qdx+(large/2)-1&&gzy <=qdy+(large/2)-1){ //leftup
fn(gzx,gzy,large/2,qdx,qdy);//leftup
fn(qdx+(large/2) , qdy+(large/2)-1 , large/2 , qdx+(large/2) , qdy );//rightup
fn(qdx+(large/2)-1 , qdy+(large/2) , large/2 , qdx , qdy+(large/2));//leftdown
fn(qdx+(large/2) , qdy+(large/2) , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
cout<< qdx+(large/2) << " " << qdy+(large/2) << " " <<1<<endl;
}
if(gzx >=qdx+(large/2)&&gzy <=qdy+(large/2)-1){ //rightup
fn(qdx+(large/2)-1 , qdy+(large/2)-1 , large/2 , qdx , qdy);//leftup
fn(gzx , gzy , large/2 , qdx+(large/2) , qdy);//rightup
fn(qdx+(large/2)-1 , qdy+(large/2) , large/2 , qdx , qdy+(large/2));//leftdown
fn(qdx+(large/2) , qdy+(large/2) , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
cout<< qdx+(large/2)-1 << " " << qdy+(large/2) << " " <<2<<endl;
}
if(gzx <=qdx+(large/2)-1&&gzy >=qdy+(large/2)){ //leftdown
fn(qdx+(large/2)-1 , qdy+(large/2)-1 , large/2 , qdx , qdy);//leftup
fn(qdx+(large/2) , qdy+(large/2)-1 , large/2 , qdx+(large/2) , qdy );//rightup
fn(gzx , gzy , large/2 , qdx , qdy+(large/2));//leftdown
fn(qdx+(large/2) , qdy+(large/2) , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
cout<< qdx+(large/2) << " " << qdy+(large/2)-1 << " " <<3<<endl;
}
if(gzx >=qdx+(large/2)&&gzy >=qdy+(large/2)){ //rightdown
fn(qdx+(large/2)-1 , qdy+(large/2)-1 , large/2 , qdx , qdy);//leftup
fn(qdx+(large/2) , qdy+(large/2)-1 , large/2 , qdx+(large/2) , qdy );//rightup
fn(qdx+(large/2)-1 , qdy+(large/2) , large/2 , qdx , qdy+(large/2));//leftdown
fn(gzx , gzy , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
cout<< qdx+(large/2)-1 << " " << qdy+(large/2)-1 << " " <<4<<endl;
}
return ;
}
int main(){
cin>>k>>gx>>gy;
mp[gx][gy]=1;
fn(gx,gy,2<<(k-1),1,1);
return 0;
}