社区讨论
普及-求大佬帮通过
题目总版参与者 7已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @lodqxe3v
- 此快照首次捕获于
- 2023/10/31 11:05 2 年前
- 此快照最后确认于
- 2023/11/07 01:34 2 年前
P5657 格雷码
题目
CPP#include<iostream>
using namespace std;
inline int read(){
unsigned long long int x=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x;
}
int main(){
int n;
char a[70]={0};
unsigned long long int i=0,j=1,k;
int p=0,flag=0;
n=read(); k=read();
//cin>>n>>k;
for (int i=1;i<=n;i++) j=j*2;
j=j-1;
while(i<j){
unsigned long long int m=(i+j)>>1;
if (m>=k) {
a[p++]=flag+48;
j=m;
flag=0;
} else {
a[p++]=(1^flag)+48;
flag=1;
i=m+1;
}
// cout<<m<<endl;
}
for (int i=0;i<p;i++)
cout<<a[i];
return 0;
}
小小的问题:用cin最后一个点过不去,加了快读17,19数据点错误,不知道为什么
回复
共 12 条回复,欢迎继续交流。
正在加载回复...