2019 CSP-S 复赛
山东的分数线还不到200,看来挺难的,有空就补题。
1、格雷码
按照题意模拟即可。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; typedef unsigned long long ull; ull n,k; void dfs(ull m,ull k,bool flag){ if(!m) return; if(flag){ if(k < (ull)1 << (m - 1)){ cout << 0; dfs(m - 1,k,1); } else{ cout << 1; dfs(m - 1,k - ((ull)1 << (m - 1)),0); } } else if(!flag){ if(k < (ull)1 << (m - 1)){ cout << 1; dfs(m - 1,k,1); } else{ cout << 0; dfs(m - 1,k - ((ull)1 << (m - 1)),0); } } return; } void solve(){ cin >> n >> k; dfs(n,k,1); return; } int main(){ solve(); return 0; }

浙公网安备 33010602011771号