AC:
#include <iostream>
using namespace std;
typedef unsigned long long ull;
ull n, k;
ull mypow(int x) {
ull ret = 1;
for (int i = 1; i <= x; i++) {
ret *= 2;
}
return ret;
}
int main() {
cin >> n >> k;
for (int i = n; i >= 1; i--) {
ull num2 = mypow(i) - 1;
ull num = num2 / 2;
if (k <= num) {
cout << 0;
} else {
cout << 1;
k = num2 - k;
}
}
return 0;
}
把 mypow(i) 改成 (1 << i) 就挂了,请问这俩有啥区别吗?