标签:
依然要用到均值不等式的知识,证明在这里:http://www.cnblogs.com/xtx1999/p/4913067.html
因为知道了两个数的最大公约数和最小公倍数,于是就知道了两个数的乘积。根据均值不等式,两个数和一定两数和一定,它们两个越接近乘积越大。所以乘积一定时,它们越接近和就越小所以枚举即可。 #include<iostream>
#include<cstdio>
using namespace std;
int gcd,lcm,a,b,tot,ans=10000000;
inline int Gcd(int x,int y)
{
return y==0?x:Gcd(y,x%y);
}
int main()
{
scanf("%d%d",&gcd,&lcm);
tot=gcd*lcm;
for(int i=1;i*i<=tot;i++)
if(tot%i==0&&Gcd(i,tot/i)==gcd)
ans=min(ans,i+tot/i);
cout<<ans;
}
标签:
原文地址:http://www.cnblogs.com/xtx1999/p/4913070.html