给出两个正整数a,b(1<=a,b<=10^100),求这两个数的最小公倍数。
格式
输入格式
仅一行,包含两个正整数a和b, 中间以一个空格隔开
输出格式
仅包含一行,为a和b的最小公倍数lcm(a,b)
样例1
样例输入1
123 321
样例输出1
13161
对于这个题目提交上去报错,我想不到还有什么其他做法来AC这道题,最后看了很多教程,发现,这里的数据已经超出整形数所能表示的范围了,即测试数据是高精度的.
换成高精度,那加减乘除可是要自己动手模拟。
下面是我最早提交两种不同的方法来解决这类问题,但是没有提交成功.
第三个代码是我百度的代码,在这里贴出来,希望代码的作者能够见谅。
#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a,long long b)
{
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
int main()
{
long long a,b;
cin>>a>>b;
int t = min(a,b),d=0,i;
for(i=1;i<=t;++i)
{
if(a%i==0&&b%i==0)
{
d = i;
}
}
cout<<(a*b)/d<<endl;
}
#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a,long long b){
long long temp;
if(b>a){
temp=b;
b=a;
a=temp;
}
long long r=a%b;
while(r!=0){
a=b;
b=r;
r=a%b;
}
return b;
}
long long gcd2(