P5657 格雷码

Miku

找规律,非常简单。

(然而蒟蒻被边界条件搞炸了)


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
unsigned long long  k;
int n;
unsigned long long a=1;

int main(){
	scanf("%d%llud",&n,&k);
	if(n==64)
	a=18446744073709551616ull;
	else
	for(int  i=n;i;--i){
		a*=(unsigned long long)2;
	}
	a-=1;
	while(a!=1){
		if(k<=(a/2)){
		printf("0");
		a=a/2;
	}else{
		printf("1");
		k=a-k;
		a=a/2;
	}
	}
	if(k==1)
		printf("1");
		else
		printf("0");
	return 0;
} 
posted @ 2020-08-04 19:51  Simex  阅读(102)  评论(0编辑  收藏  举报