ZOJ1003 Crashing Balloon 新思路

ZOJ1003是踩气球问题,网上已有很多解法。

我的思路是两个不等的正数num1和num2,如果num1小,交换两者值。

接下来判断num2是否可以分解为1到100之间的数的乘积,不能直接判断num1胜利。

接下来判断num1是否可以分解为1到100之间的数的乘积,不能直接判断num2胜利。

如若两个数都能分解,那么把num1和num2相乘,判断是否可以分解为1到100之间的数的乘积,能的话num1胜利,否则num2胜利。

我这么写得到的是WA,我想知道这个思路是否正确。如果不正确,请指出错误例子或说明,谢谢。

 #include <stdio.h>

int main()
{
    int a, b, c, i;

    while(~scanf("%d %d", &a, &b))
    {
        if(a < b)
        {
            c = a;
            a = b;
            b = c;
        }

        c = b;

        if(a <= 100)
        {
            printf("%d\n", a);
            continue;
        }

        for(i = 100; i >= 1; i--)
        {
            if(b % i == 0)
                b = b / i;
        }

        if(b > 1)
        {
            printf("%d\n", a);
            continue;
        }

        b = c;
        c = a;

        for(i = 100; i >= 1; i--)
        {
            if(a % i == 0)
                a = a / i;
        }

        if(a > 1)
        {
            printf("%d\n", b);
            continue;
        }

        a = c;
        c = a * b;

        for(i = 100; i >= 1; i--)
        {
            if(c % i == 0)
            {
                c = c / i;
            }
        }

        if(c > 1)
        {
            printf("%d\n", b);
            continue;
        }
        else
        {
            printf("%d\n", a);
            continue;
        }
    }

    return 0; 
}

把你的程序贴出来看,说思路难道还指望人家按照你的思路再写一遍?

2*3*5*7 7*11*13

题目的意思是小的可以去质疑大的,小的只要找到一种方式,使得大的不能找到,就算小的赢了。