World Cup(CF#468-DIV1+2_B)

35 篇文章 0 订阅

题目链接: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;
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值