若 n = 4, k = 15 和 n = 5, k = 15, 如果输出数据最高位补0对齐,除了最高位不同,其余位相同。( )
#include <iostream>
#include <cmath>
using namespace std;
unsigned long long long k, len;
int n;
bool flag;
int main() {
cin >> n >> k;
len = pow(2, n - 1);
while(len) {
if(!flag) {
if(k < len) cout << "0";
else if(k >= len) {
cout << "1";
k -= len;
flag = true;
}
} else if(flag) {
if(k < len) {
cout << "1";
flag = false;
} else if(k >= len) {
cout << "0";
k -= len;
}
}
len >>= 1;
}
return 0;
}
正确
错误