A Simple Math Problem HDU - 5974
转自http://www.cnblogs.com/kimsimple/p/6792395.html
题意
Given two positive integers a and b,find suitable X and Y to meet the conditions: X+Y=a Least Common Multiple (X, Y) =b
分析
x*y = b*gcd(x,y); 设 gcd(x,y) = d; x =i * d; y = j * d; a = (i + j)*d; b = i*j*d; gcd(a,b) = d; x*y = b*gcd(a,b); x + y = a; 解一元二次方程可得解
参考代码
int gcd(
int a,
int b)
{
return b==
0?a:gcd(b,a
%b);
}
int main(void)
{
int a,b;
while(~scanf(
"%d %d",&a,&b))
{
int tmp = a
*a-
4*b*gcd(a,b);
if(tmp <
0)
{
printf(
"No Solution\n");
continue;
}
double t =
sqrt(tmp);
t = (a-t)/
2;
if(t-(
int)t>
1e-
6)
{
printf(
"No Solution\n");
continue;
}
tmp = t;
printf(
"%d %d\n",tmp,a-tmp);
}
}