#include <stdio.h>
using namespace std;
bool aTrue, bTrue;
//a false, b true, then b true
//a true, b true, then a true;
//b false then a true;
void Judge(int a, int b, int p){
if(aTrue) return;// 如果a说的是实话,那么就可以直接输出高分
if(a == 1 && b == 1){//表明a,b没有公共因子,那么a,b说的都是实话,质疑被否决,返回
aTrue = true;
return;
}
if(b == 1) bTrue = true;//到此无法判断a是否说实施,但是b说的实施,继续向下判断a
while(p > 1){
if(a % p == 0) Judge(a/p, b, p - 1);
if(b % p == 0) Judge(a, b/p, p - 1);
p--;
}
return;
}
int main(){
int a, b;
while(~scanf("%d %d", &a, &b)){
if(a < b){
a ^= b;
b ^= a;
a ^= b;
}
aTrue = false;
bTrue = false;
Judge(a, b, 100);
if(!aTrue && bTrue){// higher score player told lie, lower told truth,output lower score
printf("%d\n", b);
}
else printf("%d\n", a);
}
return 0;
}
ZOJ-1003-Crashing Balloon
最新推荐文章于 2021-08-06 11:34:19 发布