蒟蒻一只 P5657 [CSP-S2019] 格雷码 55分求大佬帮调!!!
  • 板块题目总版
  • 楼主lylin123
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/29 22:40
  • 上次更新2024/8/30 11:13:57
查看原帖
蒟蒻一只 P5657 [CSP-S2019] 格雷码 55分求大佬帮调!!!
1377407
lylin123楼主2024/8/29 22:40
#include <bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int n;
ull k;

int main() {
	cin >> n >> k;
	k++;
	ull r = 1 << n, l = 1, mid;
	bool record = 1;       //判断上一次是左半段还是右半段
	for (int i = n ; i >= 1; i--) {
		mid = (l + r) / 2;
		if (record) {    //若上一次是左半段则左半输出0,右半输出1
			if (k <= mid) {
				cout << 0;
				record = 1;
				r = mid;
			} else {
				cout << 1;
				record = 0;
				l = mid + 1;
			}
		} else {       //若上一次是右半段则左半输出1,右半输出0
			if (k <= mid) {
				cout << 1;
				record = 1;
				r = mid;
			} else {
				cout << 0;
				record = 0;
				l = mid + 1;
			}
		}
	}
	return 0;
}
2024/8/29 22:40
加载中...