【题目描述】 传送门 【题解】 题目中已经清楚地告诉你怎么用n位格雷码推n+1位格雷码,直接二叉树模拟即可注意要使用unsigned long long(如果这道题没有95分部分分,不知道有多少人要凉,反正我是会凉的。。。) 【代码】 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<cctype> #include<queue> #include<stack> using namespace std; #define ull unsigned long long ull n,k; inline void work(ull x,int f,ull p){//f表示处于左子树还是右子树 if(p==0) return ; int flag,ret; if((x>=p&&f==0)||(x<p&&f==1)) flag=f^1,ret=1; else flag=f,ret=0;//比较x与p的大小判断下一层 printf("%d",ret); if(x>=p)x-=p; work(x,flag,p>>1); } int main(){ cin>>n>>k; ull t=1ull<<(n-1); work(k,0,t); return 0; }