ZOJ 1003 Crashing Balloon

来源:互联网 发布:大数据定义 编辑:程序博客网 时间:2024/04/29 16:54

题目来源:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3

这是一道模拟题!

#include <iostream>#include <cstdio>#include <cstring>using namespace std;bool aTrue, bTrue;/**判断a, b有没有公共的因子,如果有,那么分数低的胜,如果没有,那么分数高的获胜如果分数在2-100之间,那么就不用解,因为有相应的气球如果全部说谎,则高分获胜*/void Judge(int a, int b, int p){    if(aTrue)//如果a说的实话,那么就可以直接输出高分获胜        return ;    if(a == 1 && b == 1)//表明a,b没有公共的因子,那么a, b说的都是实话,那么质疑被否决,返回    {        aTrue = true;        return ;    }    if(b == 1)//到此无法判断a是否是说的实话,但是b说的实话,继续向下判断a        bTrue = true;    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)//高分说谎,低分说的是实话,则输出低分            printf("%d\n", b);        else            printf("%d\n", a);    }    return 0;}


0 0
原创粉丝点击