A47441.格雷码 题解
2025-08-13 17:55:41
发布于:北京
24阅读
0回复
0点赞
注意开ULL
!!!
的范围:
不需要看题目的方法,,,
只需要知道格雷码
的定义即可。。。
思路:先转二进制
,再转格雷码
。
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
string bin(ull k){//转二进制
string s="";
ull num=k;
while (num){
s=char((num&1)+'0')+s;//注意倒序,要在字符串前面插入
num>>=1;
}
return s;
}
int main(){
ull n,k;
cin>>n>>k;
string s=bin(k),s1;
s1=s;
for (int i=1;i<s1.size();i++){
s1[i]=(s[i-1]-'0')^(s[i]-'0')+'0';//转格雷码
}
s1.insert(0,n-s1.size(),'0');//前缀0
cout<<s1;
return 0;
}
全部评论 4
怎么一下多了3个阅读
2025-08-17 来自 浙江
1互关!!@skirmish
2025-08-17 来自 浙江
1谢谢主包
2025-08-17 来自 浙江
1没看懂主播
2025-08-14 来自 浙江
0格雷码
的定义:保留二进制数的首位,其余每位用对应的二进制位异或(^)上一个二进制位得到。函数就是把 转为二进制, 函数 行就是把二进制数按照 的规则转成格雷码
2025-08-14 来自 北京
0主包你有点强的没边了
2025-08-19 来自 浙江
0
有帮助,赞一个