lightoj 1289 LCM from 1 to n

题意: 求LCM(1, 2, 3, ... n)的值mod 2^32

思路:很显然我们是要求所有的 <=n 的素数的 <=n 的最高次的乘积,比如n=10,我们要求的是2^3 * 3^2 * 5 * 7,素数的幂次很明显是随着素数的增大而减小的,所以可以预处理出素数后然后再处理出一个前缀和,然后从小到大枚举幂次,通过二分查找该幂次下最大的素数是多少,每次答案乘上这个前缀和即可。

注意这里的n<=10^8,开bool vis判断素数肯定开不下,所以我用了一个unsigned int,一个就可以表示32个数,这样就不会MLE了~



你可能感兴趣的:(lightoj 1289 LCM from 1 to n)