1. [2019 CCF CSP-S2-Day1]格雷码
1. [2019 CCF CSP-S2-Day1]格雷#include<bits/stdc++.h>#include<vector>
#define maxn 1010 using namespace std; int n; unsigned long long k; string graycode(int n,unsigned long long k)//k的范围[0,2^n) { if(n==1)//递归终止 { if(k==0) return "0"; else return "1"; } //位运算 2^n就是将1左移n位 //同理得2^n-1就是将1左移n位 // 2^n的一半就是2^n-1 unsigned long long mid=((unsigned long long)1)<<(n-1);//注意1被默认为int.左移会越界,要将1强制转化成无符号整型
//递归 if(k<mid) return "0"+graycode(n-1,k); else return "1"+graycode(n-1,2*mid-k-1); } int main() { cin>>n>>k; cout<<graycode(n,k)<<endl; return 0; }