#include <stdio.h> #include <iostream> using namespace std; /*         8       /      \      /        \     4          12    / \            /  \   2   6      10   14  / \     / \    / \     /  \ 1  3 5  7 9 11 13 15            */ int zhongjianzhi(int m ,int n,int curroot,int k){   if(curroot == (m + n)/ 2)  return curroot;   if(m > curroot && n < curroot) return curroot;   else if (m> curroot && n > curroot){     curroot = (curroot + (1<<k)) /2;     zhongjianzhi(m,n,curroot,k);   }   else {     curroot = (curroot + 0)/2;     zhongjianzhi(m,n,curroot,k);   } } int main(){   int k,a,b,c;   cin >> k;   cin >>  a >>  b >>  c;    int num = 0;    int maxx = max(max(a,b),c);    int minn = min(min(a,b),c);    int curroot = 1<<(k-1);    num = zhongjianzhi(maxx,minn,curroot,k);    cout << num << endl;    return 0; }
点赞 评论

相关推荐

牛客热帖

更多
牛客网
牛客企业服务