因为是满二叉树,又是一层一层依次编号,所以子节点除以二就是它的父节点,
了解这个后这道题就很简单了
class LCA {
public:
int getLCA(int a, int b) {
// write code here
while( a != b)
{
if ( a > b )
a /= 2;
if ( b > a )
b /= 2;
}
return a;
}
};
这道题依旧不难,用俩个数,,max记录连续最长的数量,ret一个记录1连续的数量,一旦后者遇到0,ret就与max 比较,若大于则置换,否则就置0
#include<iostream>
using namespace std;
int main() {
int Num;
while (cin >> Num)
{
int max = 0;
for (int i = 0; i < 8; i++)
{
int ret = 0;
while (((Num >> i) & 1) == 1)
{
ret++;
i++;
}
if (ret > max)
max = ret;
}
cout << max << endl;
}
return 0;
}