求助,是范围超出了吗
查看原帖
求助,是范围超出了吗
763566
Accepted_please楼主2023/6/26 18:40
// P5657 格雷码

#include<bits/stdc++.h>
using namespace std;

int n;
unsigned long long k;//无符号超长整形 

string out_text(int n,unsigned long long k)//定义一个返回值为字符串类型的有参函数 
{//递归边界 
	if(n==0) return ""; //位数为 0,直接返回空 当然,只会有一次特判,单反大于零,都将至少返回1或0 
	if(n==1 && k==0) return "0";
	if(n==1 && k==1) return "1";
	
	if(k<pow(2,n-1))
	{
		return "0"+out_text(n-1,k);
	}
	else if(k>=pow(2,n-1))
	{
		return "1"+out_text(n-1,pow(2,n)-k-1);
	}
}

int main() 
{
	cin>>n>>k;
	cout<<out_text(n,k)<<endl;
	return 0;
}
2023/6/26 18:40
加载中...