社区讨论

开了unsigned long long的95分递归

P5657[CSP-S 2019] 格雷码参与者 4已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@lod0xfp0
此快照首次捕获于
2023/10/30 22:57
2 年前
此快照最后确认于
2023/11/05 09:15
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
unsigned long long k;

unsigned long long find(int n,unsigned long long k){
	unsigned long long ans=1;
	for(int i=1;i<=n;i++){
		ans=ans*2;
	}	
	if(k*2>=ans)
		return ans-1;
	else
		return -1;
}

string dg(int n,unsigned long long k){
	string a;
	//cout<<n<<' '<<k<<endl;
	//system("Pause");
	if(n==1){
		if(k==0)
			a='0';
		else
			a='1';
	}	
	else if(find(n,k)!=-1){	
		
		a='1'+dg(n-1,find(n,k)-k);
	}
	else{
		
		a='0'+dg(n-1,k);
	}
	return a;
}


int main(){
	cin>>n>>k;
	cout<<dg(n,k);
	return 0;
}

回复

14 条回复,欢迎继续交流。

正在加载回复...