P10029题解

· · 个人记录

P10029题解

这么简单的题我考试为什么用了一个小时

题目传送门

思路

初步思考

其实每一次输入都只有四种情况,分别是:

四种情况,一种一种分析就行了。

进一步分析(代码实现)

第一种情况:

因为两个人的数操作一次都会变成 0,(即为 m(或 n)等于 (m\mod p(或 n\mod p) ),但由于是从 Alice 先行动,所以是 Alice 赢。

部分代码:

if(n<p&&m<p){
    cout<<"Alice"<<endl;
}

第二种情况:

因为只有 Alice 一个人的数操作一次会变成 0,(即为 m 等于 p\mod m),Bob 的数在操作一次后可以被 p 整除,一直不会变,所以是 Bob 赢。

部分代码:

if(n<p&&m>=p){
    cout<<"Bob"<<endl;
}

第三种情况:

与第二种情况同理,不必再赘述了。

结果是 Alice 赢。

第四种情况:

因为两个人的数无论操作多少次都不会变成 0(原因见第二种情况),所以是平局。

部分代码:

else if(n>=p&&>=p) {
    cout<<"Lasting Battle"<<endl;
}

最后,将四种可能性合在一起,就是我们的的代码了。

代码汇总

#include<bits/stdc++.h>

using namespace std;
int main()
{
    int t;cin>>t;
for(int i=0;i<t;i++){
    long long n,m,p;cin>>n>>m>>p;
    if(n<p&&m<p){
    cout<<"Alice"<<endl;continue;
}
else if(n>=p&&m<p){
    cout<<"Alice"<<endl;continue;
}
else if(n<p&&m>=p){
    cout<<"Bob"<<endl;continue;
}

else if(n>=p&&>=p) cout<<"Lasting Battle"<<endl;
}
    return 0;
}