题解 | #二叉树#
二叉树
https://www.nowcoder.com/practice/f74c7506538b44399f2849eba2f050b5
#include <iostream>
using namespace std;
inline int find_level(int n) {
int level = 0;
while (n >>= 1) level++;
return level;
}
int main() {
int m, n;
cin >> m >> n;
int ml, nl, mp, np;
ml = find_level(m);
nl = find_level(n);
mp = m - (1 << ml);
np = n - (1 << nl) + 1;
int c = 1 << (nl - ml);
if (np < c * mp) {
cout << c - 1;
} else if (np >= c * (mp + 1)) {
cout << c * 2 - 1;
} else {
cout << c + np - c * mp - 1;
}
}
能跑
文远知行公司福利 521人发布