首先了解一个公式:
进而得到:
这个题目如果用递归会超时,错误案例具体代码如下:
#include <cstdio>
long long gcd(long long x,long long y)//gcd标准格式
{
if(x%y==0)
{
return y;
}
else
{
gcd(y,x%y);
}
}
int main()
{
long long x=0,y=0,z=0;
scanf("%lld %lld %lld",&x,&y,&z);
x=x*y/gcd(x,y),x=x*z/gcd(x,z);//按照上述公式
printf("%lld",x);
return 0;
}
如果不用递归满分代码如下:
#include<cstdio>
#include<iostream>
using namespace std;
long long gcd(long long a,long long b)
{
long long temp;
while(b)
{
/*利用辗除法,直到b为0为止*/
temp = b;
b = a % b;
a = temp;
}
return a;
}
int main()
{
long long x,y,z;
cin>>x>>y>>z;
x=x*y/gcd(x,y),x=x*z/gcd(x,z);
cout<<x;
}