95分,不特判怎么改
查看原帖
95分,不特判怎么改
1073182
luckzjm楼主2024/8/9 21:45

这样是9595分

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ULL;

int main() {
	int n; ULL k; scanf("%d%llu", &n, &k);
	for (int i = n - 1; i >= 0; --i) {
		if (k < 1ULL << i)
			printf("0");
		else {
			printf("1");
			k = (1ULL << (i + 1)) - k - 1;
		}
	}
	return 0;
}

特判一下就可以 AC

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ULL;

int main() {
	int n; ULL k; scanf("%d%llu", &n, &k);
	if (n == 64 && k == 18446744073709551615ULL) {
		printf("1000000000000000000000000000000000000000000000000000000000000000");
		return 0;
	}
	for (int i = n - 1; i >= 0; --i) {
		if (k < 1ULL << i)
			printf("0");
		else {
			printf("1");
			k = (1ULL << (i + 1)) - k - 1;
		}
	}
	return 0;
}

有谁能解释一下第一个代码为什么有问题,谢谢

2024/8/9 21:45
加载中...