社区讨论
大佬们抽空帮看看呗
学术版参与者 4已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lodqt5w0
- 此快照首次捕获于
- 2023/10/31 11:01 2 年前
- 此快照最后确认于
- 2023/11/07 01:32 2 年前
P5657 格雷码
题目链接
CPP#include <iostream>
#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;
inline int read(){
int x=0;
char ch = getchar();
while(ch<'0'||ch>'9') {
ch = getchar();
}
while(ch>='0'&&ch<='9') {
x = (x << 1) + (x << 3) + (ch ^ '0');
ch = getchar();
}
return x;
}
signed main(){
int n;
char a[1001]={0};
int i=0,j=1,k;
int p=0,flag=0;
n=read();
k=read();
for (int i=1;i<=n;i++) {
j *= 2;
}
j--;n--;
int m=(i+j)>>1;
int max=0-1;
while(i<j&&n!=max){
//cout<<m<<" "<<n<<" "<<i<<" "<<j<<endl;
if (m>=k) {
a[p++]=flag+'0';
j=m;
flag=0;
m-=pow(2,n-1);
n--;
} else {
a[p++]=(1^flag)+'0';
flag=1;
i=m+1;
m+=pow(2,n-1);
n--;
}
}
for (int i=0;i<p;i++) {
cout<<a[i];
}
return 0;
}
为什么还会有数据过不了呢
回复
共 6 条回复,欢迎继续交流。
正在加载回复...