100000005 - smallest multiple

一般我们用辗转相除法求两个数的最小公倍数,现在NOI的竞赛规则允许调用内置的__gcd函数。

我们的问题是,求出从1到n所有自然数的最小公倍数。

输入

n

测试点1:n=20

测试点2:n=30

测试点3:n=42

输出

样例

输入

10

输出

2520

提示

a、利用公式:lcm(a,b)=a*b/gcd(a,b)求出lcm(a,b),而后求gcd(lcm(a,b),c)……直到得到最后结果。

b、对a,b,c,d...每个数进行质因数分解,而后求所有质因数最高次幂的乘积。

因为这个问题在n=43时就已经溢出了,所以一般我们采用a算法就没问题,b算法也是可行算法,但编码量大,使用unordered_map等结构,导致其实际运行效率并不比第一种好。

时间限制 10 毫秒
内存限制 128 MB
统计
上一题 下一题