zoukankan      html  css  js  c++  java
  • 格雷码sol

    格雷码
    按题意二分模拟
    注意要开unsigned long long

    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    #define SZ(x) ((int)x.size())
    #define ALL(x) x.begin(),x.end()
    #define U(i,u) for(register int i=head[u];i;i=nxt[i])
    #define rep(i,a,b) for(register int i=(a);i<=(b);++i)
    #define per(i,a,b) for(register int i=(a);i>=(b);--i)
    using namespace std;
    typedef long double ld;
    typedef long long ll;
    typedef unsigned int ui;
    typedef pair<int,int> PII;
    typedef vector<int> VI;
    template<class T> inline void read(T &x){
    	x=0;char c=getchar();int f=1;
    	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
    	while(isdigit(c)){x=x*10+c-'0';c=getchar();}x*=f;
    }
    template<class T> inline void cmin(T &x, T y){x=x<y?x:y;}
    template<class T> inline void cmax(T &x, T y){x=x>y?x:y;}
    int n;
    unsigned long long k;
    unsigned long long inv[70];
    inline void print(int a,unsigned long long rak){
    	if(a==1){
    		if(rak==0)printf("0");
    		else if(rak==1)printf("1");
    		return;
    	}
    	if(a==64){
    		if(rak<inv[a-1]){
    			printf("0");
    			print(a-1,rak);
    		}else{
    			printf("1");
    			unsigned long long tmp=inv[a-1]-rak-1;
    			tmp+=inv[a-1];
    			print(a-1,tmp);
    		}
    	}
    	else{
    		if(rak<inv[a-1]){
    			printf("0");
    			print(a-1,rak);
    		}else{
    			printf("1");
    			print(a-1,inv[a]-rak-1);
    		}
    	}
    }	
    int main(){
    	read(n);read(k);
    	inv[0]=1;rep(i,1,n)inv[i]=inv[i-1]*2;
    	print(n,k);
    	return 0;
    }
    
  • 相关阅读:
    链接的具体内容
    多线程下载图片
    Commo*IO组件的简单应用
    文件分割
    mybatis动态sql
    ajax请求与json数据处理
    ModelAndView 配置与使用
    div塌陷,以及页面常用属性
    EasyUI 时间插件使用配置
    Editor富文本编辑器配置【不含图片上传】
  • 原文地址:https://www.cnblogs.com/hangzz/p/13387421.html
Copyright © 2011-2022 走看看