无标题文章

2017-01-15  本文已影响0人  yuLeaf

I - A Simple Math Problem(解题报告)

HDU - 5974

       第一次写,一道比较简单的题,乍一看觉得非常简单,但暴力枚举后就会TLE,所以就需要另辟蹊径,仔细观察题,我们可以通过数学方法来简化。输入的两个数n,m,然后设结果a,b。设a,b的最大公约数为g,然后设g*k1 = a,g*k2=b,g*k1+g*k2=n,因为m=(a*b)/g,所以m=g*k1*k2.。由此可得出g也是m和n的最大公约数,所以g为已知量,所以可以列出方程g*k1^2-n*k1+m=0,所以转化成根的存在问题,但是要注意的是要考虑根要为整数。

接下来是代码:


#include#includeint gcd(int a,int b){int temp;if(aans2)

{

ans = ans1;

ans1 = ans2;

ans2 = ans;

}

if(ans2<=0)

{

flag = 1;

}

if(flag||ans1%2==1||ans2%2==1)

{

printf("No Solution\n");

}

else

{

printf("%d %d\n",ans1/2,ans2/2);

}

}

return 0;

}

上一篇下一篇

猜你喜欢

热点阅读