英文一直是障碍,所以题意没看懂,网上百度的题意
/*题意:地面上有100个气球 编号为1~100 两个人踩气球 初始分数都是1
踩到相应编号的气球则分数乘以相应编号
最后两个人报出自己的分数 分数高的取胜
但是可能存在有人说谎的情况 分数低的人可以质疑分数高的人
如果分数高的人有一个分数不是自己踩气球得到的
则质疑是对的 分数低的选手是赢家
例如 分数高的选手要得到他说出的分数必须要踩到分数低的选手一定会踩到的气球
则质疑成功
另外 如果两个人分数都计算错误的话 则质疑被否决
*/
#include<iostream>
using namespace std;
bool nt,mt;
void dfs(int n,int m,int p)
{
if(n == 1 && m == 1)
{
nt=true;
return ;
}
if(m == 1)
{
mt=true;
}
while(p>1)
{
if(n % p == 0)
{
dfs(n/p,m,p-1);
}
if(m % p == 0)
{
dfs(n,m/p,p-1);
}
--p;
}
return ;
}
int main ()
{
int n,m;
while(cin>>n>>m)
{
if(n<m)
swap(n,m);
nt=false;
mt=false;
dfs(n,m,100);
//cout<<nt<<' '<<mt<<endl;
if(!nt&&mt) //当分数少的人没说谎,分数高的人说谎
cout<<m<<endl;
else //没说谎则分数高的赢,说谎了,两个人都是错的则高的,说谎了,分数高没说谎,分数低说谎了则输出高分
cout<<n<<endl;
}
return 0;
}