算法:设A为弹珠的总数,x,y分别为两种盒子的数目。Z为买这些盒子的花销。那么就有下面的等式:n1*x+n2*y=A,c1*x+c2*y=Z. 如果先救y的话,就要先求出n1与c1的最小公倍数。求最小公倍数的公式有lcm(x,y)=x*y/gcd(x,y),因为x*y可能会超出范围,还有一个公式是(x/gcd(x,y))*y. 利用第二个公式可以求出n1与c1的最小公倍数。设lcm(c1,n1)=a*n1=b*c1. 两式相减得,y=(b*Z-a*A)/(b*c2-a*n2). 因为y>=0, 所以b*Z-a*A>=0, b*c2-a*n2>0. 如果第二个等式不成立的话,便可判定没有解决方案。如果成立的话,Z>=a*A/b. 这样就可以求出Z,然后代回等式,就可救出y,如果y不是整数的话,也说明没有解决方案。再求出x, 如果x不是整数,也可说明没有解决方案。