本题数据范围不大,使用枚举可通过前 5 个点(第六个点会卡 1 ms)
方法一:直接枚举
// 不是满分,谨慎枚举
#include <bits/stdc++.h>
using namespace std;
int main(){
long long a,b,i;
cin>>a>>b;
for(i=1;i%a!=0||i%b!=0;i++){ // 如果 i 不是其中某个数的倍数,就继续枚举
// 纯枚举,这里什么也不用做
}
cout<<i;
return 0;
}
方法二:两个数的最小公倍数=两个数的乘积÷两个数的最大公约数 (满分)
两个数较大时,可以改为 一个数÷两个数的最大公约数×另一个数,防止溢出。但本题数据范围小,不需要考虑溢出。
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main(){
/* 读写优化,新手可忽略
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
*/
long long a,b;
cin>>a>>b;
cout<<a*b/gcd(a,b);
return 0;
}