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; }

 

posted @ 2022-10-23 21:25  shanyingrui  阅读(38)  评论(0编辑  收藏  举报