LCMonWhiteboard

[ABC259E] LCM on Whiteboard

\(\text{LCM}\) 的一种求法是:对于每个质因子,它的次数为所有数的该质因子次数的最大值,然后相乘。

考虑到一个数只有当它某个质因子的次数是所有质因子中最大(且只有它一个),它才能影响答案,否则,它无法影响答案。

这样我们就可以统计对于每种质因子是否有最大者,标记这个位置(因为有可能有的数好几种质因子的数目都是最多的),累加答案。

但是这样会有一个问题,就是说怎么判断会不会是所有数最初的答案呢?如果不搞定这个问题,答案可能会差 \(1\)

其实很好处理,每次一旦更新最大值,就把原先的这些质因子下标丢到一个数组里,最后遍历这个数组,看看有没有数后来没有出现一个质因子是最大的,就加 \(1\)

AC

修正

不需要这么麻烦统计最后那个 \(1\),只需要看看最后总的计数是不是 \(n\),如果不是 \(+1\)。原因是只要被统计到的,那么它肯定有某个质因子的次数是所有质因子中最大,而如果不是全都是,那么说明肯定有数没有一个质因子的次数是所有质因子中最大,那么将它变为 \(1\) 与原来 \(n\) 个数的最小公倍数就没有任何区别了。

更简洁的版本

posted @ 2023-07-02 09:40  wscqwq  阅读(4)  评论(0编辑  收藏  举报