无标题文章

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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容