90分代码求查错
查看原帖
90分代码求查错
193158
michael_song楼主2020/7/26 10:02

救救孩子吧!!!

#include<cstdio>
#include<iostream>
using namespace std;
long long n;
unsigned long long pw=1,k;//!!!!!!
void dfs(long long left,long long right,bool vis,long long level)
{
	unsigned long long mid=(left+right)>>1;
	level++;
	if(level>n)//!!!!
		return;
	if(vis==false)
		if(k<=mid)
		{
			if(level!=1)//!!!
				printf("0");
			dfs(left,mid,false,level);
		}
		else
		{
			if(level!=1)
				printf("1");
			dfs(mid+1,right,true,level);
		}
	if(vis==true)
		if(k<=mid)
		{
			if(level!=1)
				printf("1");
			dfs(left,mid,false,level);
		}
		else
		{
			if(level!=1)
				printf("0");
			dfs(mid+1,right,true,level);
		}
}
int main()
{
	int i,j;
	scanf("%lld",&n); 
	cin>>k;//不要随便改题意!!! 
	//找出离他最短的二次幂(暴力) 
	for(i=1;i<=n;i++)//!!!!!
		pw*=2;
	cout<<pw<<endl; 
	if(n==1)//!!!写法注意 
	{
		printf("%d",k);
		return 0;
	}
	
	if(k<=pw/2)
	{
		printf("0");
		dfs(0,pw-1,false,0);
	}
	else
	{
		printf("1");
		dfs(0,pw-1,true,0); 
	}
	return 0;
}
2020/7/26 10:02
加载中...