题目链接:http://codeforces.com/contest/931/problem/B
题意:给你n,a,b n是总的队伍数,a,b分别是两个人的所在的位置。
问假设a,b都很强,请问他们在哪一个回合会碰面。
如果最后一个回合就输出Final!
分析:因为数据小,其实可以暴力求解,但是为什么不用一下官方题解的做法呢。
其实可以不断除以2即可,考虑到如果奇数除以2会退一位所以要+1再除以2.
只要他们遇见即可,输出当前回合,若超出了,证明在最后的回合。
贴上代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b,ans=0;
scanf("%d%d%d",&n,&a,&b);
for(;n>>=1;ans++){
if(a==b){
printf("%d\n",ans);
return 0;
}
a=(a+1)/2;
b=(b+1)/2;
}
cout<<"Final!"<<endl;
return 0;
}