题解
2024-08-14 20:27:15
发布于:上海
11阅读
0回复
0点赞
实际上没必要递归
你实际上可以digui求出二进制其实没必要,注意用unsigned long long
,否则你会WA一个
#include<iostream>
#include<bitset>
#include<algorithm>
using namespace std;
using i64=unsigned long long;//一定要用unsigned long long,否则你会WA一个
int main(){
i64 n,m;
cin>>n>>m;
bitset<64>bs(m);//运用bitset工具来转换为二进制
string bin=bs.to_string();
string G="";
G+=bin[0];//格雷码最高位和二进制最高位相同
for(int i=0;i<63;i++)G+=(bin[i]!=bin[i+1])+48;//模拟异或
reverse(G.begin(),G.end());//以便于输出
for(int i=n-1;i>=0;i--)cout<<G[i];
return 0;
}
这里空空如也
有帮助,赞一个