CSP考前打了一下这个东西,去年没参加CSP,看一下第一题 普及-,就打了一下 小样例都过了,大样例过不了。我想要是考试我就挂了。 找规律不太可做,就二分模拟了一下,谁能看看 大样例 是哪里出错了,只得了15分?
#include<cstdio>
#include<iostream>
using namespace std;
int n;
unsigned long long k;
void check(unsigned long long l,unsigned long long r,int g,int q)
{
if(l==r) return;
unsigned long long mid=(l+r-1)/2;
if(q==0)
{
if(g==0)
{
if(k<=mid)
{
putchar('1');
check(l,mid,1,1);
}
else {
putchar('0');
check(mid+1,r,1,0);
}
}
if(g==1)
{
if(k<=mid)
{
putchar('0');
check(l,mid,g,0);
}
else {
putchar('1');
check(mid+1,r,g,1);
}
}
}
if(q==1)
{
if(g==0)
{
if(k<=mid)
{
putchar('0');
check(l,mid,g,0);
}
else {
putchar('1');
check(mid+1,r,g,1);
}
}
if(g==1)
{
if(k<=mid)
{
putchar('1');
check(l,mid,0,1);
}
else {
putchar('0');
check(mid+1,r,0,0);
}
}
}
}
int main()
{
cin>>n>>k;
check(0,(1<<n)-1,1,0);
return 0;
}