NEUQ-OJ 2001: 诸神之战(五月六校联赛)

题目描述:
一场诸神之战在神仙中爆发了。诸神之战采用的形式是1v1的淘汰赛,胜利的神仙进入下一轮。如果参加某一轮的神仙数量是奇数的话,那么就会有一个幸运的神仙轮空,直接进入下一轮。红太阳神想知道,在运气最好的情况下,他能闯进第几轮?
输入:
多组数据。 第一行给出一个正整数T。T为数据组数。 接下来T行,每行包括两个正整数N和M。N表示参加第一轮的神仙的数量,M表示红太阳神的实力在所有的神中排第几。假设所有的神仙的实力都不相同,排名靠前的神仙一定能战胜排名靠后的神仙。
1 < T < 104 10 4

1 < n , m < 109 10 9
输出:
对于每组数据,在单独的一行中输出一个整数表示红太阳神运气最好的时候能闯进第几轮。

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
    int T;
    cin>>T;

    while(T--)
    {
        int m,n;
        cin>>n>>m;
        int y=m-1;  /**y是菊苣的个数**/
        m=n-m;      /**m是比他更加垃圾的人数**/

        int level=1;  /**初始化**/
        /**循环条件:当还有比他垃圾的人(比上不足比下有余)
           或者 没有人比他垃圾 并且比他厉害的人刚好两两决斗 (可坐山观虎斗)
           并且不能出现:已经只剩下一个人比他弱,并且没人比他更吊(已经进入决赛胜出模式)
        **/
        while((m||(m==0&&y%2==0))&&!(y==0&&m==1))
        {
            if(m)   /**如果有更菜的,选一个来打**/
                m--;
            if(y%2&&m>0)  /**如果还有更垃圾的,并且还有奇数个菊苣,就要拉一个菜鸡给他玩**/
            {
                m--;
            }
            if(m)      /**如果还有菜鸡,那么菜鸡自相残杀,同时考虑轮空**/
                m=m/2+m%2;
            y=y/2+y%2;  /**对于菊苣同上**/
            level++;    /**进入下一level**/
        }
        cout<<level<<endl;
    }
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值