P10029题解
P10029题解
这么简单的题我考试为什么用了一个小时
题目传送门
思路
初步思考
其实每一次输入都只有四种情况,分别是:
- Alice 持有的数和 Bob 持有的数都小于
p ; - Alice 持有的数小于
p ,而 Bob 持有的数大于等于p ; - Alice 持有的数大于等于
p ,而 Bob 持有的数小于p ; - Alice 持有的数和 Bob 持有的数都大于
p ;
四种情况,一种一种分析就行了。
进一步分析(代码实现)
第一种情况:
因为两个人的数操作一次都会变成 0,(即为
部分代码:
if(n<p&&m<p){
cout<<"Alice"<<endl;
}
第二种情况:
因为只有 Alice 一个人的数操作一次会变成 0,(即为
部分代码:
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;
}