LMY与LYM

来源:互联网 发布:python unpackbits 编辑:程序博客网 时间:2024/05/16 07:25

问题描述

LMY与LYM在玩一个数字游戏,一开始黑板上写有两个整数n,m。LMY先手,LMY和LYM轮流操作,每人都可以将当前的n加上n的一个正因数d,变成n+d,第一个将n变成一个大于m的数的人输掉比赛。现在给出两个数n,m;LMY和LYM都非常聪明,问谁会获胜?


输入格式

有多组测试数据:
第一行一个整数T,表示有T组数据。
第二行到第T+1行,每行两个整数,分别表示n,m。


输出格式

输出T行,若LMY赢,输出“LMY beats LYM”; 若LYM赢,输出“LYM beats LMY”;


样例输入

1
2 3


样例输出

LMY beats LYM


数据范围

30%数据: T<10; n<10;m<100;
100%数据:T<=213;n<=231-1, n

心塞到无法呼吸

写这道题题解完全是为了改悔!
在考试的时候其实第一次是想对了正解的但是最后5分钟的时候脑壳打铁换成了O(N)的爆炸算法
完全是个智障!很想骂自己!
闲话不多说,分析如下:
我们可以知道在n==m-1的时候先手是必赢的局面。而题目中已经说了m必定是个奇数。
一个很好想的性质:奇数的因数必定是一个奇数,偶数的因数必定是一个偶数。
所以当n==m-2的时候,一定是先手必输的局面,因为后手很聪明!可以加1!
1!!!!特殊的数字!!!!
所以说以此类推,当n==m-3的时候,一定是先手必赢。
看到这里你就应该明白了
这题明摆着就是个判断一下n的奇偶就ok
可是为什么我最后却把想出来的正解改了呢
因为我想错了一组样例,还是太智障了
唉,改悔!

#include<iostream>using namespace std;int main(){    long long n,m,t;    cin>>t;    while(t--)    {        cin>>n>>m;        if(n%2==0)cout<<"LMY beats LYM"<<endl;        else cout<<"LYM beats LMY"<<endl;    }}
原创粉丝点击