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