对的,最小公倍数就是a*b/gcd(a,b) ,其中gcd是最大公约数
using namespace std;
int T;
LL gcd(LL aa,LL bb) { if(aa>a>>b; cout<<a*b/gcd(a,b)<<endl; return; }
int main() { scanf(“%d”,&T); for(int step=0;step<T;step++) { printf(“case #%d:\n”,step); solve(); } return 0; }
为什么OJ告诉我说这是一道难题??????
一开始给我吓得还以为要用高精度??????
lcm()的最佳做法是先求出gcd、把两个数除以gcd,最后相乘。
(下面是快乐做法,和用pypy的老哥都很快乐)
#include <iostream> #include <numeric> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; for (int i = 0; i < t; ++i) { unsigned long long a, b; cin >> a >> b; cout << "case #" << i << ":\n" << lcm(a, b) << '\n'; } }
对的,最小公倍数就是a*b/gcd(a,b) ,其中gcd是最大公约数
include
using namespace std;
define LL long long
int T;
LL gcd(LL aa,LL bb)
{
if(aa>a>>b;
cout<<a*b/gcd(a,b)<<endl;
return;
}
int main()
{
scanf(“%d”,&T);
for(int step=0;step<T;step++)
{
printf(“case #%d:\n”,step);
solve();
}
return 0;
}
为什么OJ告诉我说这是一道难题??????
一开始给我吓得还以为要用高精度??????
lcm()的最佳做法是先求出gcd、把两个数除以gcd,最后相乘。
(下面是快乐做法,和用pypy的老哥都很快乐)