NEUQ(2001-诸神之战)

题目链接:http://newoj.acmclub.cn/problems/2001

当时没写出来,后来看别人博客得出的。

参考:https://blog.csdn.net/viewsetting/article/details/80296269

题意:有N个神仙,主人公太阳神在里面排第M名。

想知道到底,它的运气最好时,他能进入第几轮。

模拟题:后来才知道是怎么回事:

把比他厉害的设为   a    比他菜的设为    c

以下:    比他弱的称为  C  吧,    比他强的称为:A 吧。他就称为:B吧。

                C的人数为:   C        ,A的人数为    :A        ,B的人数    :1    (太阳神本身)

首先设置循环条件:

1、当存在    C 时,证明    B    一定能坚持这一个回合。

2、当存在     A%2==0    &&C==0    时,证明    A的个数为偶数,且没有C和它比了    (坐山观虎斗)

3、当存在    A==0    &&    C==1    时,必须要跳出循环,因为一开始就说明    A==0了,

题目给定太阳的排名就是第一        这样y才有可能等于0,这个就是决胜圈。


面对上述都是我对博客的深切解读,但是代码是别人的,我尊重原创,但是我也是不会,

才写的博客来记录这道题的,希望原创博主能宽恕我。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
     int n,m,t;
     scanf("%d",&t);
     while(t--){
        scanf("%d%d",&n,&m);
        int L=1;
        int A=m-1;
        int C=n-m;
        while( ( C || ( A%2==0 && C==0 ) ) && !( A==0 && C==1 ) ){
            if( C>0 )
               C--;
            if( A%2 && C >0){
                C--;
            }
            if(C){
                C=C/2+C%2;
            }
            A=A/2+A%2;
            L++;
        }
        printf("%d\n",L);
     }
     return 0;
}

猜你喜欢

转载自blog.csdn.net/Z_sea/article/details/80564946
今日推荐