<h2>Description</h2><div class="content"><p>一个顺序存储的完全二叉树:</p><p><span style="font-family: 'Courier New';"> 1</span></p><p><span style="font-family: 'Courier New';"> / \</span></p><p><span style="font-family: 'Courier New';"> 2 3</span></p><p><span style="font-family: 'Courier New';"> / \ / \</span></p><p><span style="font-family: 'Courier New';"> 4 5 6 7</span></p><p><span style="font-family: 'Courier New';"> ...</span></p><p>任意给定两结点的编号,求两结点最近的公共祖先。</p><p></p></div><h2>Input</h2><div class="content"><p>每组数据一行,为空格隔开的两个数i和j,皆为32位有符号正整数</p><p></p></div><h2>Output</h2><div class="content"><p>每组数据对应一行,为编号为i和j的结点的最近公共祖先的编号</p><p></p></div><h2>Sample Input</h2><pre class="content"><span class="sampledata">4 5
4 7</span>
Sample Output
2
1
HINT
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)>0)
{
if(n==m)
{
printf("%d\n",n);
continue;
}
while(n!=m)
{
if(n>m) n=n/2;
else m=m/2;
}
printf("%d\n",n);
}
return 0;
}