Gravatar
PigFlies
积分:10
提交:8 / 22
格式问题
题目描述第10行,“我们按上述算法得到的排列顺序将它们从 0∼2(上标n-1)编号”中,“2(上标n-1)”应该为“$2^n-1$”。

题目 3289 [CSP 2019S]格雷码
2025-09-25 19:47:15
Gravatar
金牌教师王艳芳
积分:149
提交:61 / 371

#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("2019code.in","r",stdin);
freopen("2019code.out","w",stdout);
unsigned long long n,k;
cin>>n>>k;
char da[65];
for(int i=n;i>=1;i--){
unsigned long long zj=(1ULL<<(i-1));
if(k<zj){
da[n-i]='0';
}else{
da[n-i]='1';
k=(1ULL<<i)-1-k;
}
}
da[n]='\0';
cout<<da;
return 0;
}

题目 3289 [CSP 2019S]格雷码
2025-09-23 20:11:21
Gravatar
金牌教师王艳芳
积分:149
提交:61 / 371
去网上找点位运算之类的东西会好做点,从最高位开始,逐位确定格雷码的每一位是0还是1,然后每次判断k是否小于中间值,如果k小于中间值,这一位就是0;否则这一位就是1,并且需要把k翻转一下,(1ULL << (i-1)) - 计算中间值,(1ULL << i) - 1 - k - 翻转k值

题目 3289 [CSP 2019S]格雷码
2025-09-23 12:58:20
Gravatar
李星昊
积分:139
提交:68 / 148
回复 @夜莺 :
NB

题目 3289 [CSP 2019S]格雷码
2022-10-21 10:25:24
Gravatar
䱖虁職
积分:443
提交:238 / 419

Gravatar
夜莺
积分:1192
提交:424 / 1048
样例不对都能过?!

题目 3289 [CSP 2019S]格雷码
2019-12-06 22:34:55