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;
}